2015-08-28 50 views
1

我正在使用一些Linux文件级操作将SQL服务器插入转换为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),...) 
+0

@vidhyadar能否请您eloberate你的问题更容易理解的方式? – mohan111

回答

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),...) 
+0

非常好...请你解释一下命令.. – vidyadhar

+0

http://www.gnu.org/software/sed/manual/sed.html - 试试这个 – Abhishek

+0

@vidyadhar的s/... foo .../bar/g'将用'bar'替换所有'... foo ...'。其余的东西是正则表达式。哪一部分你不明白? – Kent

相关问题