12

我想在日志文件中搜索多个字符串。只有在所有搜索字符串都在同一行中的情况下,才应突出显示那些条目。我可以为此使用更少的命令或任何其他更好的选择吗?我的日志文件大小通常为几 GB。

4

2 回答 2

19

当您要搜索string1orstring2时,请使用/string1|string2。你说你想要找到两者的行:

/string1.*string2

当您不知道行中的顺序并想查看完整的行时,您将需要

/.*string1.*string2.*|.*string2.*string1.*

或者更短

/.*(string1.*string2|string2.*string1).*

组合更多没有固定顺序的单词会变得一团糟,先用 with 过滤awk很好。

于 2017-01-28T22:31:25.123 回答
3

用于awk过滤文件并less查看过滤结果:

awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less

如果文件很大,您可能希望在stdbuf前面看到结果less

stdbuf awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less
于 2017-01-27T19:12:56.993 回答