【发布时间】:2016-01-22 09:50:09
【问题描述】:
我有一个包含以下文本的文件:
1152 39.955534 138.59.102.xxx -> 172.27.37.xxx HTTP 581 HTTP/1.1 200 OK (JPEG JFIF image)
1188 42.626056 35.183.215.xxx -> 172.27.37.xxx HTTP 474 HTTP/1.1 302 Moved Temporarily
1214 42.661556 159.70.229.xxx -> 172.27.37.xxx HTTP 1496 HTTP/1.1 200 OK (GIF89a)
...<truncated>
我一直在尝试(失败)用下面的 Perl 代码解析它。我想每行打印两个 IP 地址减去垃圾。下面的字符串:
perl -anle '/[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}/ and print $&' < my_input_file
字符串只输出第一列IP: 138.59.102.xxx 35.183.215.xxx 159.70.229.xxx
但无法打印 172.27.xxx.xxx 地址。如果 bash 或 Python 有效,我不反对任何帮助。
【问题讨论】:
-
你不需要
-a——它启用autosplit并填充数组@F。最好将您的文件作为 参数 提供给 perl,而不是通过 STDIN 推送它
标签: python regex bash perl parsing