使用Sed从具有大文本文件的文本中提取子字符串

时间:2015-11-05 13:21:40

标签: regex macos sed

我有一些大型的分号分隔文本文件(防火墙日志),我需要从中提取信息。我一直在寻找使用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上进行此操作

2 个答案:

答案 0 :(得分:2)

如果没有涉及转义和引用,您只能使用cut

cut -d';' -f34-38 file

答案 1 :(得分:0)

谢谢,我最终使用了:

awk' BEGIN {FS = OFS =";"} {打印$ 12,$ 14,$ 34,$ 35,$ 36,$ 37,$ 45,$ 46}'