我有以下格式的文件:
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并不熟悉。我究竟做错了什么?是否适合这种治疗?
答案 0 :(得分:3)
我已编辑了您的sed
。试试这个,
sed -i.bak 's/-MIB.*$/-MIB/g' ./myfile
下面,
-i - 将对原始文件进行更改,并以.bak扩展名
备份原始文件答案 1 :(得分:2)
答案 2 :(得分:1)
sed
-n
选项会禁止默认打印,如果您在p
语句后添加sed
选项,则会在以后启用该打印。
在上面的示例中,您所说的sed
是禁止打印所有行,然后仅打印已成功完成替换的行。结果,从不打印没有替换的行。
您需要从命令中删除-n
选项和p
:
sed -ie 's/-MIB.*$/-MIB/' ./myfile