想写一个替换文本文件中某些字符串的bash脚本,但是我对如何替换“'值”内的内容感到困惑。对于变量。
假设我希望在文本文件中设置的值可以是:
TCP_IN = "123,35,995"
.. 123,35,995
可以是任何字符串(不只是带逗号的数字。
我如何替换此密钥对搜索TCP_IN = "*"
并在bash脚本中设置*
所在的值?
答案 0 :(得分:1)
您可以使用
sed -E 's/(TCP_IN *= *")[^"]+/\1MyNewVal/g'
请参阅IDEONE demo
正则表达式匹配并捕获到第1组TCP_IN
,后跟零个或多个空格,后跟=
符号,然后再添加零个或多个空格,然后[^"]+
匹配1或"
以外的其他字符([^...]
是*否定字符类,匹配所有字符,但在char类中定义的字符除外)。