【问题标题】:Correct regex for traceroute output正确的跟踪路由输出的正则表达式
【发布时间】:2014-12-10 20:35:43
【问题描述】:

下面的示例输出由 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。

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

【问题讨论】:

    标签: regex linux pcre


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-24
      • 2023-03-12
      • 2015-04-29
      • 1970-01-01
      • 2014-06-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多