【问题标题】:How to get only ip addresses from the echo stat command如何从 echo stat 命令中仅获取 IP 地址
【发布时间】:2017-03-26 23:18:01
【问题描述】:

当我执行以下命令时

echo stat | nc localhost 2181

我得到了

Zookeeper version: 3.4.6-1569965, built on 02/20/2014 09:09 GMT
Clients:
/10.999.87.01:56046[1](queued=0,recved=95261,sent=95261)
/10.888.98.02:47356[1](queued=0,recved=45856,sent=45856)
/10.777.09.03:53636[1](queued=0,recved=96378,sent=96380)

Latency min/avg/max: 0/0/316
Received: 3034250
Sent: 3035252
Connections: 3
Outstanding: 0
Zxid: 0x21000351cf
Mode: follower
Node count: 2740

谁能帮我用命令分隔下面的ip地址

10.999.87.01
10.888.98.02
10.777.09.03

所以我的问题是我们是否有任何命令。如果是,请帮忙。 :)

【问题讨论】:

    标签: linux shell command-line-interface apache-zookeeper


    【解决方案1】:
    ... nc .... | awk -F: '/^[\/]/{sub(/^[\/]/,"",$1);print $1}'
    

    输出

    10.999.87.01
    10.888.98.02
    10.777.09.03
    

    【讨论】:

    • 那么您的输出与您在 Q 中指出的不一样。或者它包含 \r\n 行尾。使用.... nc .... | cat -vet 进行检查。如果您在行尾看到^M$,请告诉我。祝你好运。
    【解决方案2】:

    有很多方法可以使用 SED、AWK、Grep、Bash、Perl 或其他语言来执行此操作。但我更喜欢 Perl 进行文本处理,因为它绝对是完成这项任务最灵活的工具。

    基于/:标记的简单表达式:

    your-command | perl -ne '/^\/([^:]+):/ and print "$1\n"'
    

    严格的模式匹配(使用上述工具看起来非常复杂(甚至在某些平台上不可用):

    your-command | perl -ne '/^\/((?:\d{1,3}\.){3}\d{1,3}):/ and print "$1\n"'
    

    【讨论】:

    【解决方案3】:
    awk -F'[/:]' 'NR>2&&NR<6{print $2}' ipaddresses
    
    10.999.87.01
    10.888.98.02
    10.777.09.03
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-03-01
      • 2017-11-10
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多