如何使用sed删除模式中的整行

如何使用sed删除模式中的整行,sed,Sed,我有一个文件: hi:: hello hai welcome bye 我想删除带有单词hi 我尝试了以下命令: sed -i -e "/hi/d" filename 但产出是有限的 :: heloo hai 如何使用sed删除整个线路??这就是现在无法测试的行“hi::hello hai”尝试/^.*hi.*$/d,因此这是一个猜测,这应该足够了: sed -e '/hi/d' file 测试和工作 tom@eee ~ % cat test hi:: hello hai welcom

我有一个文件:

hi:: hello hai
welcome
bye
我想删除带有单词
hi

我尝试了以下命令:

sed -i -e "/hi/d" filename
但产出是有限的

 :: heloo hai

如何使用sed删除整个线路??这就是现在无法测试的行“hi::hello hai”尝试
/^.*hi.*$/d
,因此这是一个猜测,这应该足够了:

sed -e '/hi/d' file
测试和工作

tom@eee ~ % cat test 
hi:: hello hai
welcome
bye
tom@eee ~ % sed -e '/hi/d' test
welcome
bye
正如damienfrancois所说,grep也能工作:

tom@eee ~ % grep -v 'hi' test 
welcome
bye

使用
awk
可以做到这一点

awk '!/^hi/' file
welcome
bye
这将删除行首有
hi
的行。你没有说世界是否可以在句子的中间。如果是,请:

awk '!/hi/'
welcome
bye

奇怪,你的命令似乎很好。必须使用吗?看起来像典型的grep-v.work您的文本文件或环境有问题。这个命令在我这里的内容上运行得很好。@damienfrancois可能希望使用sed来实现就地功能,以避免手动放大到新文件并进行复制或其他任何操作。是否涉及MS windows?您可能有这样的行结尾\r\n。使用
dos2unix文件
清除该文件,然后重试。你的代码应该可以工作。祝你好运