想写一个bash脚本来替换文本文件中的一些字符串,但是我越来越挂断了如何替换变量的'值'内的内容。如何使用bash替换文件内的文件?
假设我希望到一个文本文件中设置的值可能是:
TCP_IN = "123,35,995"
..哪里123,35,995
可以是任意的字符串(不只是用逗号的数字
我怎么能取代这个密钥对搜索TCP_IN = "*"
并从内部的bash脚本中设置内部值*
?
想写一个bash脚本来替换文本文件中的一些字符串,但是我越来越挂断了如何替换变量的'值'内的内容。如何使用bash替换文件内的文件?
假设我希望到一个文本文件中设置的值可能是:
TCP_IN = "123,35,995"
..哪里123,35,995
可以是任意的字符串(不只是用逗号的数字
我怎么能取代这个密钥对搜索TCP_IN = "*"
并从内部的bash脚本中设置内部值*
?
您可以使用
sed -E 's/(TCP_IN *= *")[^"]+/\1MyNewVal/g'
正则表达式匹配和捕获到组1 TCP_IN
随后与零个或多个空格,随后用=
符号,随后再次与零个或多个空格,然后[^"]+
匹配1个或多个"
([^...]
是一个否定字符类,它匹配除char类中定义的所有字符以外的字符)。
关于这一点,请使用一个名为'MyNewVal'的变量,你可以这样做:'sed -E's /(TCP_IN * = *“)[^”] +/\ 1'$ MyNewVal'/g'' –
我有一个连续运行多个这样的小问题。 http://ideone.com/xUuhMq导致归零文件大小。 –
我不确定你的意思,没有一个变量在里面有'''?语法工作> http://ideone.com/0j1VDt。只有一次,而不是连续运行。 :) –
检查[此演示](http://ideone.com/PqnKMz) –
真棒:)非常感谢你!!!!! –
@WiktorStribiżew为什么不在这里回答? –