【发布时间】:2020-03-10 13:44:36
【问题描述】:
0
我制作了我的正则表达式,它在我的正则表达式制作工具上完美运行。但是当我尝试在命令行中使用我的正则表达式时它不起作用,或者至少我似乎无法使用它。
我的正则表达式是:
.*\[(GET|POST|OPTIONS|PUT|DELETE)\].*
无论在哪里,它都匹配调用方法我希望它显示在一个包含所有调用的简单文件中。
我尝试了很多命令,其中之一是:
cat myfile.txt | awk /'\[(GET|POST|OPTIONS|PUT|DELETE)\]/ {print $1}'
但它返回我第一列,虽然匹配组 1 是方法。
谁能帮帮我?
如果需要,我可以提供一个例子。
例子:
两种可能的输入:
32.45.53.01、32.32.32.543、21.32.54.675、21.32.54.779 161.21.34.56 [10/Mar/2020:13:04:14 +0100] [HTTP/1.1] [GET] [-://yahoo.com/webapp/wcs/stores/servlet/libero/home] 302 - EL=[22ms, -] WAS=[mediaworld_b2c:3213] - WAS=[-] - - [垃圾邮件]
10.40.23.483 10.8.21.321 [10/Mar/2020:15:18:06 +0100] [HTTP/1.1] [GET] [-://google-preprod.test.com/sda/v1/ticrcv /TSY-JKidsahjsdaAO-A-JYVS5gGFxZ8PY8J-GRs0g-GOB2C] 200 108 EL=[17ms, -] WAS=[-] - -
两种情况下的输出都必须是:
获取
【问题讨论】:
-
awk 命令
{print $1}不用于打印第一个匹配项。变量$1是 awk 记录拆分产生的第一个字段。