2016-11-13 22 views
-1

当我执行下面的命令如何从回声stat命令

echo stat | nc localhost 2181 

我越来越得到唯一的IP地址

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 

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

回答

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

输出

10.999.87.01 
10.888.98.02 
10.777.09.03 
+0

上述解决方案不起作用 – Manikya

+0

那么你的输出不像你在Q中指出的那样,或者它包含'\ r \ n'行结尾。检查那个wi th .... .... nc .... |猫-vet'。如果你在行尾看到'^ M $',请告诉我。祝你好运。 – shellter

0

有很多的方法来执行此使用SED,AWK,grep的,猛砸,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"' 
+0

上述解决方案不起作用 – Manikya

+0

@Manikya,它[实际工程](http://www.tutorialspoint.com/execute_bash_online.php?PID=0Bw_CjBb95KQMREFmSmhQMGtVR0E)! –

0
基于 /:标记

简单的表达

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

10.999.87.01 
10.888.98.02 
10.777.09.03