Bash原地替换文本
我有一些插入语句,我想通过替换值来替换另一个环境。我的SQL INSERT语句看起来如下: -Bash原地替换文本
INSERT INTO TABLE (col1, col2, col3, col4, col5) VALUES ('1', '/var/tmp', 'xyz, mno, pqr', '123', '<dummy value>');
我想将它转化成这样的,有没有空格柱之间的值(),它看起来像这样之间留有: -
INSERT INTO TABLE (col1,col2,col3,col4,col5) VALUES ('1','/var/tmp','xyz,mno,pqr','123','<dummy value>');
什么我已经试过到目前为止是这样的: -
echo "INSERT INTO TABLE (col1, col2, col3, col4, col5) VALUES ('1', '/var/tmp', 'xyz, mno, pqr', '123', '<dummy value>')" | awk -F'[()]' '{printf "%s(%s)%s(%s)", $1, $2, $3, gensub(".*\(","",gensub(" ", "", $4))}'
,所得输出如下: -
INSERT INTO TABLE (col1, col2, col3, col4, col5) VALUES ('1', '/var/tmp', 'xyz, mno, pqr', '123', '<dummy value>'))
我被困在这里。任何线索都会有帮助。
回答:
我想你可以使用sed
更简单的解决方案:如果你不知道的逗号的位置
sed -E 's/, /,/g'
,您可以使用正则表达式(见@anubhava comment):
sed -E 's/ *, */,/g'
例如:
$ echo "(1, 2, 3) and (4 ,5 ,6)" | sed -E 's/ *, */,/g' (1,2,3) and (4,5,6)
以上是 Bash原地替换文本 的全部内容, 来源链接: utcz.com/qa/259730.html