我正在使用一些 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),...)
最佳答案
这个 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),...)
关于mysql - 如何替换特定字符串的前后字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270135/