我正在尝试对这一行user_agent字段进行正则表达式。
user_agent =“ Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_6) AppleWebKit / 437.38(KHTML,例如Gecko)Chrome / 49.0.3477.100 Safari / 437.38“
['3,100', '3,000']
上面的命令返回
仅“ user_agent =“ Mozilla / 5.0”
。但是我需要全文
“ Mozilla / 5.0(Macintosh; Intel Mac OS X 10_11_6)AppleWebKit / 437.38 (KHTML,例如Gecko)Chrome / 49.0.3477.100 Safari / 437.38“
要匹配。
请帮助修改我使用的正则表达式模式。
答案 0 :(得分:0)
您面临的问题是2折。
因此,您需要放开awk的打印,并使用.*
代替*
并具有积极的前瞻性。
检查以下内容:
cat myfile | grep -oP '(user_agent=\".*\")(?=\saccept)'
在这里,
\".*\"
正在搜索双引号内的所有内容
(?=\saccept)
是肯定的前瞻性陈述,一旦找到a space followed by accept
,就会立即停止搜索。