Sed 删除到匹配后的行末尾,保留不匹配的行
我有以下表格的文件:Sed 删除到匹配后的行末尾,保留不匹配的行,sed,line,string-matching,Sed,Line,String Matching,我有以下表格的文件: 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不是很熟
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不是很熟悉。我做错了什么?sed适合这种治疗吗?您需要省去
-n
选项。
签出我已经编辑了你的
sed
。试试这个
sed -i.bak 's/-MIB.*$/-MIB/g' ./myfile
这里,
-i-将对原始文件进行更改,并将原始文件备份到.bak扩展名中
sed
-n
选项会抑制默认打印,如果您在sed
语句后放置p
选项,则会禁用默认打印
在上面的示例中,您告诉sed的是禁止打印所有行,然后只打印已成功完成替换的行。因此,不会打印未进行替换的行
您需要从命令中删除-n
选项和p
:
sed -ie 's/-MIB.*$/-MIB/' ./myfile
谢谢你的补充解释。