2016-03-08 15 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。只有一次,而不是連續運行。 :) –

相關問題