2013-06-25 63 views
8

我有以下形式的文件:刪除賽後結束線,不斷線不匹配

interesting text-MIB blah blah blah 
VERY INTERESTING TEXT 
interesting text-MIB blah blah blah 

在包含「-MIB」串的每一行,我想刪除文本跟在這個字符串之後,直到行尾。

下面的命令似乎打算工作:

sed -i -n -e 's/-MIB.*$/-MIB/p' ./myfile 

我的問題是,它還會刪除在我的模式沒有找到該行。在這裏,「非常有趣的文字」行將被刪除。我對sed並不熟悉。我究竟做錯了什麼?是否適合這種治療?

回答

3

我已編輯您的sed。試試這個,

sed -i.bak 's/-MIB.*$/-MIB/g' ./myfile 

這裏,

-i - 會做原始文件的變化,並採取原始文件的備份.bak擴展

1

sed-n選項取消默認的記錄是稍後啓用,如果您在sed聲明後面加上p選項。

在上例中,您告訴sed的是禁止打印所有行,然後僅打印那些成功完成替換的行。因此,不進行替換的行永遠不會被打印。

你需要從你的命令刪除-n選項和p

sed -ie 's/-MIB.*$/-MIB/' ./myfile 
+0

感謝您的補充解釋。 –