2016-03-08 52 views
1

想写一个bash脚本来替换文本文件中的一些字符串,但是我越来越挂断了如何替换变量的'值'内的内容。如何使用bash替换文件内的文件?

假设我希望到一个文本文件中设置的值可能是:

TCP_IN = "123,35,995"

..哪里123,35,995可以是任意的字符串(不只是用逗号的数字

我怎么能取代这个密钥对搜索TCP_IN = "*"并从内部的bash脚本中设置内部值*

+1

检查[此演示](http://ideone.com/PqnKMz) –

+0

真棒:)非常感谢你!!!!! –

+0

@WiktorStribiżew为什么不在这里回答? –

回答

1

您可以使用

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

参见IDEONE demo

正则表达式匹配和捕获到组1 TCP_IN随后与零个或多个空格,随后用=符号,随后再次与零个或多个空格,然后[^"]+匹配1个或多个"[^...]是一个否定字符类,它匹配除char类中定义的所有字符以外的字符)。

+0

关于这一点,请使用一个名为'MyNewVal'的变量,你可以这样做:'sed -E's /(TCP_IN * = *“)[^”] +/\ 1'$ MyNewVal'/g'' –

+0

我有一个连续运行多个这样的小问题。 http://ideone.com/xUuhMq导致归零文件大小。 –

+0

我不确定你的意思,没有一个变量在里面有'''?语法工作> http://ideone.com/0j1VDt。只有一次,而不是连续运行。 :) –

相关问题