正则表达式user_agent字段

Regex user_agent fields

我正在尝试重新生成此单行用户代理字段。

user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6)
AppleWebKit/437.38 (KHTML, like Gecko) Chrome/49.0.3477.100
Safari/437.38"

1
cat myfile | grep -oP '(user_agent=[^ ]*)' | awk {'print $1'}

上面的命令返回

"user_agent="Mozilla/5.0"

只有。但是我需要一个完整的文本

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/437.38
(KHTML, like Gecko) Chrome/49.0.3477.100 Safari/437.38"

相配。

请帮助修改我使用的regex模式。


你面临的问题是2倍。

  • 您的regex*只获取第一个字母,因为后面有一个空格,并且没有被捕获。
  • 此外,即使修复了第一个部分,awk也将只打印由空格分隔的第一个内容。
  • 所以你需要放开awk打印,用.*代替*,并有一个积极的展望。

    检查以下内容:

    1
    cat myfile | grep -oP '(user_agent=".*")(?=\saccept)'

    在这里,\".*\"正在搜索双引号内的所有内容。(?=\saccept)是一个积极的前瞻性声明,一旦找到a space followed by accept就会停止搜索。