以下示例输出由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。
什么是正确的正则表达式?
答案 0 :(得分:0)
这种工作最好用unix中的AWK完成。如果要在Tab上拆分字符串,可以将其管道输入到awk中,并且可以使用$ 1,$ 2等来访问输入的各个元素。 awk语法的一些示例是:
" some_command" | awk' {print $ 2}'
如果您想进一步阅读,最好的选择是本指南here