我需要这样的东西:
grep ^"unwanted_word"XXXXXXXX
我需要这样的东西:
grep ^"unwanted_word"XXXXXXXX
当前回答
我通过使用grep -vw“^/”排除了根(“/”)挂载点。
# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}'
/
/root/.m2
/root
/var
# cat /tmp/topfsfind.txt| head -4 |awk '{print $NF}' | grep -vw "^/"
/root/.m2
/root
/var
其他回答
正确的解决方案是使用grep -v "word"文件,它的awk等价:
awk '!/word/' file
然而,如果你碰巧有一个更复杂的情况,你想要,比如,XXX出现,YYY不出现,那么awk就很方便了,而不是通过管道处理几个grep:
awk '/XXX/ && !/YYY/' file
# ^^^^^ ^^^^^^
# I want it |
# I don't want it
你甚至可以说一些更复杂的东西。例如:我想要那些包含XXX或YYY的行,但不包含ZZZ:
awk '(/XXX/ || /YYY/) && !/ZZZ/' file
etc.
如果您的grep支持Perl正则表达式与-P选项,您可以这样做(如果bash;如果TCSH你需要转义!):
grep -P '(?!.*unwanted_word)keyword' file
演示:
$ cat file
foo1
foo2
foo3
foo4
bar
baz
现在让我们列出除foo3之外的所有foo
$ grep -P '(?!.*foo3)foo' file
foo1
foo2
foo4
$
-v选项将显示与模式不匹配的所有行。
grep -v ^unwanted_word
使用grep -v进行反向匹配:
grep -v "unwanted word" file pattern
我有一个目录,里面有很多文件。我想找到所有不包含字符串“加速”的文件,所以我成功地使用了以下命令:
grep -iL speedup *