Mysql 如何替换特定字符串的前后字符
我正在使用一些Linux文件级操作将SQL server插入转换为MySQL插入。 有人能告诉我如何将下面出现的所有内容转换成一行吗Mysql 如何替换特定字符串的前后字符,mysql,sql-server,linux,shell,Mysql,Sql Server,Linux,Shell,我正在使用一些Linux文件级操作将SQL server插入转换为MySQL插入。 有人能告诉我如何将下面出现的所有内容转换成一行吗 (..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...) 如下图所示 (..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...) 例如: 需要将强制转换(hexval作为Dat
(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)
如下图所示
(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...)
例如:
需要将强制转换(hexval作为DateTime)转换为myfunc(hexval),其中hexval是动态的
$echo "(..,CAST(0x0000722300000000 AS DateTime),..,CAST(0x0000979900C10112 AS DateTime),...)" | using grep or sed or awk
(..,myfunc(0x0000722300000000),..,myfunc(0x0000979900C10112),...)
这一行将有助于:
sed 's/CAST(\([^)]\+\) AS DateTime)/myfunc(\1)/g' file
测试:
@vidhyadar能否请您以更容易理解的方式详细阐述您的问题???@vidyadhar
s/…foo…/bar/g
将所有…foo…
替换为bar
。剩下的是正则表达式。哪个部分你不懂?@kent我不懂([^)]\+)和\1,它们在命令中使用。你能解释一下它们是什么吗doing@vidyadhar[^)]\+
是一个或多个非-)
字符\1
引用regex组,它是第一对(…)
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),...)