我有一些插入语句,我想通过替换原来的值来转换为另一个环境。我的sql insert语句如下所示: -
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>'))
我被困在这里。任何暗示都会有所帮助。
答案 0 :(得分:3)
我认为使用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)