正则表达式从日志条目中提取第n个元素

时间:2015-01-05 19:26:46

标签: regex

我正在处理的日志数据采用以下格式:

格式1:

2015-01-03T18:52:06Z Sat, 03 Jan 2015 18:52:05 GMT GET /images/title2.png 304  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.10 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.10 Dublin

上述条目中的字段是“空格”分隔的。

格式2:

2015-01-03T18:52:06Z|Sat, 03 Jan 2015 18:52:05|GMT|GET|/images/title2.png 304| Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/600.3.10 (KHTML, like Gecko) Version/8.0.3 Safari/600.3.10|Dublin

上面条目中的字段是“垂直管道”分开的。

问题: 由于字段的数量没有变化,我正在寻找创建一个正则表达式来提取一个字段,该字段在第N个“垂直管道”或第N个“空格”之后发生,一直到下一个遇到的“垂直管道”或“空间”。

1 个答案:

答案 0 :(得分:0)

的好工作:

awk -F'[ |]' '{print $9}' file

其中$ 9是第9个元素(用空格或|分隔)