【发布时间】:2015-06-07 23:48:12
【问题描述】:
我有一个集中式日志文件,我试图将其解析为多个文件,以使其更易于管理。
该文件包含如下所示的行
2015-04-02 16:03:13 -0500 192.168.3.3: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:20 -0500 192.168.3.8: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:24 -0500 192.168.4.11: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:33 -0500 192.168.4.7: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:34 -0500 192.168.4.8: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:46 -0500 192.168.5.10: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
2015-04-02 16:03:50 -0500 192.168.5.11: shell login for 'rancid' from 192.168.50.10 on tty1 succeeded
我想将日志文件拆分出来,以便与第一个 IP 地址相关的所有行都在同一个日志文件中,这样 192.168.3.8 就有自己的文件,192.168.4.11 有自己的文件等
【问题讨论】:
-
试一试,然后向我们展示您的尝试:)
-
好吧,到目前为止我唯一能想到的就是在一个循环中针对一组 IP 地址运行 grep ......我想这会很好,但这是一个列表(数组)我d 必须跟上。除非我只能使用字符 33-46 数字进行通配符搜索,因为地址从每行的字符 33 开始,并让它使用该地址作为文件名
-
如果你想用 shell 脚本来做,
sed或awk是不错的选择。否则,你总是可以用 python 或其他语言在一个小程序中解析它(我就是这样做的,但这只是因为我不擅长 sed/awk...)。
标签: linux bash grep centos6 cat