想寫一個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爲什麼不在這裏回答? –