2012-10-03 93 views
3

我對sed腳本完全陌生。我一直在研究如何將文本添加到文件中,並設法獲得我想要添加到文件中正確行的文本,但無法找到將其添加到正確位置的方法!追加到文本文件中的一行中間sed

,所以我必須在文本文件中的行看起來像這樣

listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 

我想太行看起來像添加IP:

listen_addresses = 'localhost, 192.0.0.0, 192.0.0.0' # what IP address(es) to listen on; 

經過反覆試驗,我只有:

sed -i '/listen_addresses/ s/.*/&,192.0.0.0/' testfile 

這給:

listen_addresses = 'localhost, 192.0.0.0' # what IP address(es) to listen on; 192.168.0.0 

我該如何將其添加到正確的位置?

回答

6

有很多方法。其中一個可能是搜索最後的'並使用括號保存匹配的數據。我改單引號雙引號,因爲我要匹配的正則表達式中其中的一個:

sed -i "/listen_addresses/ s/^\(.*\)\('\)/\1, 192.0.0.0\2/" testfile 
  • ^\(.*\):從一開始比賽,直到行(greeding)結束。
  • \('\):從尾回溯到'。所以它會匹配字符串中的最後一個。
  • \1:保存在第一對括號之間的內容。
  • , 192.0.0.0:文字字符串。
  • \2:保存在第二對括號之間的內容。
+0

謝謝你的建議,我對sed完全陌生,想學習,我可以請你解釋一下你的腳本嗎?什麼是\ 2 /「最後? – Sarah92

+0

@SarahAddis:編輯添加說明 – Birei

+0

謝謝,我感謝! – Sarah92

2

只需更換線路的' #部分:

sed -i "/listen_addresses/ s/' #/, 192.0.0.0' #/" testfile 

請注意,我用雙引號所以單引號可以easilly插入。

相關問題