我有一些大型的分号分隔文本文件(防火墙日志),我需要从中提取信息。我一直在寻找使用sed(对我来说很新),但我一直在圈子里走动,我无法让它发挥作用。
文本文件中的每一行看起来类似于:
96;3Nov2015;23:59:00;10.22.20.13;log;accept;;eth0.500;inbound;VPN-1 & FireWall-1;;CN=FW1-FW1,O=BBB-FWMAN-01..gh;Network;353;{B2C0E4-0EFB-48AF-A1E-6B7A2543EB};Outbound DNS;;;;;;;;;;;;;;;;;;172.1.1.4;8.8.8.8;udp;domain-udp;58364;Internal;External;domain-udp;;;;143.4.63.101;;250;1;;;******;******;;******;******;******;******;******;******;;;;;;;;;;******;;******;;;;;;;;;;;;;;;;;;;;;;******;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;******;;******;******;;;******;;;;;;;;;;;;;;;;;;;;;;;******;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
我需要在每一行中提取文本的'172.1.1.4; 8.8.8.8; udp; domain-udp; 58364'部分。 (从第33个分号到第37个分号)
任何帮助都将不胜感激。
此致
斯图尔特
不过,我正在使用OSX的Macbook上进行此操作答案 0 :(得分:2)
如果没有涉及转义和引用,您只能使用cut
:
cut -d';' -f34-38 file
答案 1 :(得分:0)
谢谢,我最终使用了:
awk' BEGIN {FS = OFS =";"} {打印$ 12,$ 14,$ 34,$ 35,$ 36,$ 37,$ 45,$ 46}'