如何替换特定字符串的字符前后

时间:2015-08-28 11:34:15

标签: mysql sql-server linux shell

我正在使用一些Linux文件级操作将SQL Server插入转换为MySQL插入。 有人可以让我知道如何转换下面所有出现的行

(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)

如下图所示

(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...)

实施例

需要将CAST(hexval AS DateTime)转换为myfunc(hexval),其中hexval是动态的。

$echo "(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)" | using grep or sed or awk 

(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...)

1 个答案:

答案 0 :(得分:2)

这个sed单行将有所帮助:

sed 's/CAST(\([^)]\+\) AS DateTime)/myfunc(\1)/g' file

试验:

kent$  cat f
(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)

kent$  sed 's/CAST(\([^)]\+\) AS DateTime)/myfunc(\1)/g' f
(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...)