2013-11-21 75 views
3

我正在寫一個bash腳本,並在腳本中,我需要在一個特定的文件採取行動,當我完成了加在其進行與腳本的其餘部分。如何搜索特定行的文件,然後在該行註釋或註釋?

我需要掃描過的文件,當我找到一個特定的配置行,我需要先在評論一個配置,然後移動到註釋掉其他配置選項。

編輯:哇,我的第一個問題,我遺漏了最重要的細節!我已經編輯我的問題與這個具體的例子:

我想編輯文件dhcpd.conf的,我正在尋找這些行註釋掉:

option domain-name "example.org"; 
option domain-name-servers ns1.example.org, ns2.example.org; 

所以他們最終看起來像這樣:

#option domain-name "example.org"; 
#option domain-name-servers ns1.example.org, ns2.example.org; 

在這一點上,bash腳本將繼續並執行一堆其他指令。

你可以給我任何幫助將不勝感激。 :-)

+3

歡迎堆棧溢出!請花一分鐘閱讀[如何我問一個很好的問題?(http://stackoverflow.com/help/how-to-ask) – devnull

+0

我想你忘記提及重要的細節是,你怎麼知道哪條線你想評論和你想評論哪一行?您是使用模式搜索(例如grep?)找到該行還是您知道行號?還是完全是其他的東西?如果沒有那些珍貴的東西,我認爲這不能被正確回答。 – ffledgling

回答

0

有可能是一個更好的解決方案,但你可以試試這個文件。

$ cat file.txt 
option domain-name example.org; 
dont touch me 
option domain-name-servers ns1.example.org 
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt 

$ cat file.txt 
#option domain-name example.org; 
dont touch me 
#option domain-name-servers ns1.example.org 
dont touch this 

$ sed -i 's/^option domain-name/#option domain-name/' file.txt 

這是working DEMO through command line using echo

+0

當我嘗試這個時,它只是打印出整個文件,並沒有做出改變:'sed's/^「選項域名」example.org「; /#option domain-name」example.org「; 「/'dhcpd.conf'任何想法我做錯了什麼? – robotsandcake

+0

sed將只打印對標準輸出的更改,不會更改文件。 將輸出重定向到新文件,或更好: 使用sed -i。 -i實際上會更改文件內容。但在測試和開發腳本時,請小心使用-i! – kkeller

+0

這對我工作謝謝 – robotsandcake

0

如果你需要在一個配置文件執行多種不同的指令,你可以指令轉換爲sed命令,然後運行sed -f commands config.file.txt

你必須找到最有用的例子SED使用這裏:http://sed.sourceforge.net/sed1line.txt