【发布时间】:2017-06-13 13:38:55
【问题描述】:
我想在日志文件中搜索多个字符串。只有在所有搜索字符串都在同一行中的情况下,才应突出显示那些条目。我可以为此使用更少的命令或任何其他更好的选择吗?我的日志文件大小通常为几 GB。
【问题讨论】:
标签: linux parsing unix less-unix
我想在日志文件中搜索多个字符串。只有在所有搜索字符串都在同一行中的情况下,才应突出显示那些条目。我可以为此使用更少的命令或任何其他更好的选择吗?我的日志文件大小通常为几 GB。
【问题讨论】:
标签: linux parsing unix less-unix
如果要搜索string1 或string2,请使用/string1|string2。
你说你想要找到两者的行:
/string1.*string2
当您不知道行中的顺序并想查看完整的行时,您将需要
/.*string1.*string2.*|.*string2.*string1.*
或者更短
/.*(string1.*string2|string2.*string1).*
组合更多没有固定顺序的单词会变得一团糟,先用awk过滤就好了。
【讨论】:
使用awk过滤文件,less查看过滤结果:
awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less
如果文件很大,您可能希望使用stdbuf 来查看前面less 中的结果:
stdbuf awk '/pattern1/ && /pattern2/ && /pattern3/' file.log | less
【讨论】: