代码之家  ›  专栏  ›  技术社区  ›  sdespont

仅当包含2个特定字符串时才填充行

  •  0
  • sdespont  · 技术社区  · 2 年前

    有可能吗 grep 行,如果其中包含2个特定字符串?

    我有这样的日志,我只想grep包含字符串“13/Dec/2022:11”的行 以及 “获取/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"
    
    3 回复  |  直到 2 年前
        1
  •  2
  •   sdespont    2 年前

    只需grep两次:

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

    或与zgrep组合

    zgrep "13/Dec/2022:11" * | grep "GET /fr/test"
    
        2
  •  1
  •   Gilles Quénot    2 年前

    像这样,只有一个 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
    
        3
  •  1
  •   Cyrus    2 年前

    使用GNU grep和2个字符串:

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