如何从echo stat命令中仅获取ip地址

时间:2016-11-13 02:00:46

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

当我执行以下命令时

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

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

3 个答案:

答案 0 :(得分:0)

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

<强>输出

10.999.87.01
10.888.98.02
10.777.09.03

答案 1 :(得分:0)

有很多方法可以使用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"'

答案 2 :(得分:0)

awk -F'[/:]' 'NR>2&&NR<6{print $2}' ipaddresses

10.999.87.01
10.888.98.02
10.777.09.03