gpt4 book ai didi

regex - Awk,仅打印与正则表达式匹配的模式

转载 作者:行者123 更新时间:2023-12-03 09:58:50 25 4
gpt4 key购买 nike

  • 例如,我有以下字符串:

  •  10.1.2.194 (197.84.211.148) - - [08/Oct/2015:09:01:44 +0000] "GET /merlin-web-za/web/images/refinements/loader.gif HTTP/1.1" 200 4178 0 1868 "http://www.autotrader.co.za/makemodel/make/chevrolet/model/aveo/caryearrangeszar/2012/search?sort=PriceAsc&locationName=Cape%20Town&latitude=-33.92584&longitude=18.42322&county=Western%20Cape" "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36" "ajp://10.1.4.66:8009"

    我需要在以下位置进行修改:

    08/Oct/2015:09:01:44 GET /merlin-web-za/web/images/refinements/loader

    我该如何使用awk或egrep?
    -我在下面尝试了命令,但是第一个命令的结果显示了包含两个跟随模式的完整字符串

    awk ' /08/Oct/2015:09:[0-9]{2}:[0-9]{1,2}/ && /GET (/[a-z0-9-]{1,}){1,3}/'



    cat file | egrep -o "08/Oct/2015:09:[0-9]{2}:[0-9]{1,}.* GET (/[a-z0-9-]{1,}){1,}"

    填补了上述模式之间的空白,结果我可以看到:

    08/Oct/2015:09:01:44 +0000] "GET /merlin-web-za/web/images/refinements/loader

    那不是我想要得到的

    最佳答案

    您可以使用

    awk '{a=$5" "$7" "$8; gsub(/[]["]|\.[^.]*$/, "", a); print a}'

    online demo

    详细信息

    默认的字段分隔符-空白-用于将行拆分为多个字段。
  • a=$5" "$7" "$8;-通过将字段5、7和8与空格
  • 连接起来来创建变量
  • gsub(/[]["]|\.[^.]*$/, "", a)-删除
  • 字符串末尾的 []". + .以外的任何0+个字符
  • print a-打印结果。

  • 但是,您发送给我的文件的第一个括号中包含用逗号和空格分隔的IP地址。您可以使用
    sed -E -n 's/^[^][]*\[([^][[:space:]]+)[^][]*\][ \t]+"([[:alpha:]]+[ \t]+[^[:space:]]+).*/\1 \2/p' access_log > newfile

    获得所需的结果,即 time + Get/post +URL

    详细信息
  • ^-匹配字符串
  • 的开头
  • [^][]*-[]以外的任何0个或更多字符
  • \[-一个[ char
  • ([^][[:space:]]+)-组1:除][和空格
  • 以外的其他1个字符
  • [^][]*-[]以外的任何0个或更多字符
  • \]-一个] char
  • [ \t]+-1+水平空格字符
  • "-一个" char
  • ([[:alpha:]]+[ \t]+[^[:space:]]+)-组2:1+个字母,1+水平空格,然后是除空格
  • 以外的1+个字符
  • .*-字符串的其余部分。

  • 结果是组1和2值的串联。

    关于regex - Awk,仅打印与正则表达式匹配的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59217849/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com