正确的traceroute输出正则表达式

时间:2014-10-15 17:05:22

标签: regex linux pcre

以下示例输出由traceroute转储,我想使用pcre表达式来提取一些数据。

host-1 (1.1.1.1)  10.111 ms  20.222 ms host-2 (2.2.2.2)  21.716 ms
host-3 (2.2.2.2)  10.111 ms  31.716 ms  21.716 ms

我需要一行:

 - domain : host-1
 - ip : 1.1.1.1
 - t1 : 10.111
 - t2 : 20.222

 - domain eg: host-2
 - ip : 2.2.2.2
 - t1 : 21.716

 - domain eg: host-3
 - t1 : 10.111
 - t2 : 31.716
 - t3 : 21.716

我在pcretest /(?:(?:([\w\-\.]+)\s\(([\d+\.]+)\))(?:\s+(\d+\.\d+)\sms){1,3})*/g

中使用了这个正则表达式

但是我只能在域和IP之后有最后的响应时间,例如行host-3 (2.2.2.2) 10.111 ms 31.716 ms 21.716 ms只返回21.716。

什么是正确的正则表达式?

1 个答案:

答案 0 :(得分:0)

这种工作最好用unix中的AWK完成。如果要在Tab上拆分字符串,可以将其管道输入到awk中,并且可以使用$ 1,$ 2等来访问输入的各个元素。 awk语法的一些示例是:

" some_command" | awk' {print $ 2}'

如果您想进一步阅读,最好的选择是本指南here