包含string1的Grep行或包含string2的NOT
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包含string1的Grep行或包含string2的NOT相关的知识,希望对你有一定的参考价值。
我需要将行从stdout重定向到文件,但只包含那些包含某些string1
或不包含某些string2
的文件。我怎样才能做到这一点?我只知道如何单独进行(包含string1
的行或不包含string2
的行)。它不一定是grep
,只是我可以在终端的管道中使用的东西。
答案
Perl救援!
perl -ne 'print if /string1/ || ! /string2/' < file
-n
逐行读取输入/string1/
是一场正则表达式比赛||
的意思是“或”,!
的意思是“不是”
另一答案
你可以管道到awk
:
your_process | awk '$0!~/string2/ || $0~/string1/{print $0}'
如果正在处理的行不包含“string2”:$0!~/string2/
或者,如果正在处理的行包含“string1”:$0~/string1/
然后打印行:{print $0}
正如@Mischa在评论中分享的那样,你可以使用awk非常简洁。这可以写成:
your_process | awk '/string1/ || !/string2/'
另一答案
你可以尝试这样的事情:
tail -f {SOMETHING} | grep string1 | grep -v string2 >> /tmp/out.log
以上是关于包含string1的Grep行或包含string2的NOT的主要内容,如果未能解决你的问题,请参考以下文章
将“string1”与逗号分隔的“string2”进行比较而不拆分
java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)