【发布时间】:2017-05-09 09:28:21
【问题描述】:
我有一个包含网络日志的文件;它的简化版本如下:
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
Unix
Linux
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
START
Solaris
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
Aix
SCO
我已经尝试了几个正则表达式组合来识别 Accept-Language,它是使用以下 awk/sed 的每一行的开头:
/^[a-z]{2}(-[A-Z]{2})?/
/\*|[A-Z]{1,8}(-[A-Z0-9]{1,8})*/i
/([^-;]*)(?:-([^;]*))?(?:;q=([0-9]\.[0-9]))?/
到目前为止,我还没有设法让 awk/sed 给我以下结果:
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd;
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd; Unix Linux
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd; STAR Solaris
en-GB,en-US;q=0.8,en jsdjpksdkskd;lkskd; Aix SCO
感谢任何帮助。该文件包含大约 100 万条以上的记录,因此我很高兴采用不使用 sed/awk 并提高性能的路线。
【问题讨论】:
-
在你想要的输出中,我相信你有多余的一行。删除前三个中的一个?
标签: regex file awk sed http-accept-language