2012-04-18 74 views
15

我有一個惱人的閉源工具,它將特定的信息寫入其配置文件。如果您嘗試在不同的文件上使用該配置,則會加載舊文件。 Grrr ...如何從一組文件中刪除所有匹配模式的行?

幸運的是,配置文件是文本,所以我可以版本控制它們,事實證明,如果只是從文件中刪除違規行,則不會造成危害。

但是該工具不斷將線條放回原位。因此,每次我要檢查配置文件的新版本時,我必須刪除包含符號openDirFile的所有行。

我即將構建某種形式的bash命令在每個文件上運行grep -v,將結果存儲在臨時文件中,然後刪除原始文件並重命名臨時文件,但是我想知道是否有人知道乾淨的解決方案,或者已經炮製並調試了類似的調用。

要獲得額外榮譽,如何在不破壞同一目錄中的符號鏈接的情況下完成此任務(favourite.rc-> signals.rc)?

回答

18
sed -i '/openDirFile/d' *.conf 

此做刪除所有conf文件

你也可以用「查找」命令結合行,如果你的conf文件位於不同的路徑。

請注意,-i將執行「就地」刪除操作。

+0

真棒,我怎麼不知道這件事? – 2012-04-18 09:34:41

0

這是我想出了慶典咒:

for i in *.rc ; do TMP=$(mktemp) ; grep -v openDirFile ${i} >${TMP} ; mv ${TMP} ${i} ; done 

肯特的答案顯然是更勝一籌。

相關問題