如何使用bash在文件中替换此字符串?

时间:2016-03-08 17:30:37

标签: regex bash

想写一个替换文本文件中某些字符串的bash脚本,但是我对如何替换“'值”内的内容感到困惑。对于变量。

假设我希望在文本文件中设置的值可以是:

TCP_IN = "123,35,995"

.. 123,35,995可以是任何字符串(不只是带逗号的数字。

我如何替换此密钥对搜索TCP_IN = "*"并在bash脚本中设置*所在的值?

1 个答案:

答案 0 :(得分:1)

您可以使用

sed -E 's/(TCP_IN *= *")[^"]+/\1MyNewVal/g'

请参阅IDEONE demo

正则表达式匹配并捕获到第1组TCP_IN,后跟零个或多个空格,后跟=符号,然后再添加零个或多个空格,然后[^"]+匹配1或"以外的其他字符([^...]是*否定字符类,匹配所有字符,但在char类中定义的字符除外)。