我試圖在bash腳本中的文本文件的中間添加一行文本。具體來說,我試圖添加一個名稱服務器到我的/etc/resolv.conf文件。既然這樣,resolv.conf文件看起來是這樣的:如何使用bash將文本行添加到文件的中間?
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
我的目標是增加nameserver 127.0.0.1
所有其他名稱服務器線上方,但低於上述任何文本。最後,我希望我的resolve.conf文件看起來像這樣:
# Generated by NetworkManager
domain dhcp.example.com
search dhcp.example.com
nameserver 127.0.0.1
nameserver 10.0.0.1
nameserver 10.0.0.2
nameserver 10.0.0.3
這怎麼可能通過bash腳本?這是sed或awk可以做的事情嗎?或者是否會創造性地重新創建文件是我的最佳舉動?
這是偉大的。唯一奇怪的是它在新文件的頂部添加了一個空白行。不是什麼大不了的事情,但是它導致了OCD的一刻。 – PHLAK
哦,是的,你是對的!然而,命令'sed -n'H; $ {x; s/^ \ n //; s/nameserver。* \ n/nameserver 127.0.0.1 \ n&/; p;}'resolv.conf'解決了這個問題問題。我在命令中加入了s/^ \ n //',所以它會在模式空間內容的開始處刪除換行符。 – brandizzi
太棒了,謝謝! – PHLAK