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

回到顶部