应用场景:
我有一堆cfg文件中均有一个键值对:
“db_name” : "db1"
我想把涉及到的cfg文件里面的db1换成db2,于是使用sed命令:
sed -i 's/"db_name" :.*$/"db_name" : "db2"/' *.cfg
换完之后发现一个问题:
有些cfg文件中这个键值对出现在文件最后,因此末尾没有逗号,为:
“db_name” : "db1"
但是另外一些cfg文件中这个键值对出现在中间,因此末尾有逗号,为:
“db_name” : "db1",
如果用上面的sed命令那么替换完之后所有的键值对末尾都没有了逗号,就不符合json文件格式了,于是改进sed命令如下:
sed -i 's/"db_name" :[^,]*/"db_name" : "db2"/' *.cfg
这样替换完之后,原来后面有逗号的还是有,原来没有逗号的还是没有,OK