grep - 删除包含指定字符以外的其他内容的行

2 人关注

我试图找到一种方法来删除任何包含我指定的字符以外的行。例如,如果我指定字符a,e,i,o,u,r,s,t,我有一个单词列表

那么 "meow "应该从列表中删除,因为它包含字母 "m "和 "w",我还没有同意。有什么想法吗?

1 个评论
你的每一行是否只包含一个词?
linux
grep
user1161080
user1161080
发布于 2012-01-21
2 个回答
jcollado
jcollado
发布于 2012-01-21
已采纳
0 人赞同

或者,你可以这样做。

$ grep -v '[^aeiourst]' file.txt

该模式匹配包含列表中未指定的任何字符的行。这在grep手册页中有明确解释。

方括号表达式是一个由[ 和 ]括起来的字符列表。 它匹配该列表中的任何单个字符;如果列表中的第一个字符是圆点^,那么它匹配列表中没有的任何字符。 例如,正则表达式[0123456789]匹配任何单一数字。

除此之外,由于你想要的是删除符合该模式的行,所以使用了-v/--invert-match选项。这在grep手册页中也有很好的解释。

-v, -反转-匹配
颠倒匹配的意义,选择不匹配的行。 (-v是由POSIX指定的。)