sed-删除不包含模式的行

时间:2015-01-01 20:04:58

标签: bash sed

我很惊讶我在SO上找不到与此相似的问题。

如何使用sed删除所有不包含特定模式的行。

例如,我有这个文件:

cat kitty dog
giraffe panda
lion tiger

我想要一个sed命令,在调用时,将删除所有不包含单词cat的行:

cat kitty dog

4 个答案:

答案 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