删除除匹配模式行最佳实践(sed)之外的所有行

kop*_*kan 18 unix sed

我想删除除包含匹配模式的行之外的所有行.

我就这样做了:

sed -n 's/matchingpattern/matchingpattern/p' file.txt
Run Code Online (Sandbox Code Playgroud)

但我只是好奇,因为我将匹配模式重命名为匹配模式本身.看起来像是浪费在这里.

有一个更好的方法吗?

gee*_*aur 51

sed '/pattern/!d' file.txt
Run Code Online (Sandbox Code Playgroud)

但是你在grep这里重新发明.

  • 对.但是sed有这个漂亮的地方标志,grep没有.sed -i'/ pattern /!d'文件名比grep'pattern'文件名> filename.tmp && mv filename.tmp文件名容易得多 (11认同)