我很惊讶我在SO上找不到与此相似的问题。
如何使用sed删除所有不包含特定模式的行。
例如,我有这个文件:
cat kitty dog
giraffe panda
lion tiger
我想要一个sed命令,在调用时,将删除所有不包含单词cat
的行:
cat kitty dog
答案 0 :(得分:8)
这样做:
sed -i '/cat/!d' file1.txt
强制完全匹配:
sed -i '/\<cat\>/!d' file1.txt
或
sed -i '/\bcat\b/!d' file1.txt
\<\>
&amp; \b\b
强制完全匹配。
答案 1 :(得分:4)
所以你的要求就是“给我所有包含字符串cat
的行”。那么为什么不只是简单地使用grep
:
grep cat file
答案 2 :(得分:1)
您可以使用此awk
awk '/cat/' file
答案 3 :(得分:1)
查看所有包含“cat&#39; cat&#39; (如肯特所指出的):
grep cat file
查看所有不包含单词&#39; cat&#39;:
的行grep -v cat file