perl 仅当包含2个特定字符串时才对行进行Grep

kcrjzv8t  于 2022-12-19  发布在  Perl
关注(0)|答案(3)|浏览(166)

是否可以grep行仅当包含2个特定字符串时?
我有这样的日志,我希望只对包含字符串“13/Dec/2022:11”AND“GET /fr/test”的行执行grep

access.log:site.ch 111.222.333.444 - - [13/Dec/2022:11:40:00 +0100] "GET /fr/test HTTP/1.1" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
xxb16uws

xxb16uws1#

就像这样,只要一个awk

awk '/13\/Dec\/2022:11/ && /GET \/fr\/test/' file

或一个perl

perl -ne 'print if m|13/Dec/2022:11| and m|GET /fr/test|' file

或一个sed

sed -n '/13\/Dec\/2022:11/,/GET \/fr\/test/p' file

或使用一个zgrepgrep

zgrep -E '13/Dec/2022:11.*?GET /fr/test' file
vfh0ocws

vfh0ocws2#

只需grep两次:

| grep "13/Dec/2022:11" | grep "GET /fr/test"
kd3sttzy

kd3sttzy3#

使用GNU grep和2个字符串:

grep -E 'string1.*string2|string2.*string1' file

相关问题