包含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的主要内容,如果未能解决你的问题,请参考以下文章

如何将 grep 生成的每个文件放入 zip 文件中

SDUT-2772_数据结构实验之串一:KMP简单应用

SDUT 2772 数据结构实验之串一:KMP简单应用

将“string1”与逗号分隔的“string2”进行比较而不拆分

java查找string1和string2是不是含有相同的字母种类和数量(string1是否是string2的重新组合)

VB.NET 赋值字符串 ---- String1 = String1+String2