是否可能仅在其中包含2个特定字符串时才能grep
行?
我有这样的日志,我想只grep包含字符串"13/Dec/2022:11">和"GET/fr/test"
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"
只需grep两次:
| grep "13/Dec/2022:11" | grep "GET /fr/test"
或与zgrep
结合使用zgrep "13/Dec/2022:11" * | grep "GET /fr/test"
就像这样,只有一个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
或一个zgrep
或grep
:
zgrep -E '13/Dec/2022:11.*?GET /fr/test' file
使用GNU grep和2个字符串:
grep -E 'string1.*string2|string2.*string1' file