我正在使用一些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),...)
答案 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),...)