【发布时间】:2014-09-30 21:24:26
【问题描述】:
这是一个与 awk 相关的问题(请不要 perl/cut/sed... :))。
我实际上要做的是仅使用 awk 从 MacOS 上的 netstat 输出中获取目标地址。
这里是输出示例:
$ netstat -nl -p tcp
Active Internet connections
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 127.0.0.1.26164 127.0.0.1.50100 ESTABLISHED
tcp4 0 0 127.0.0.1.50100 127.0.0.1.26164 ESTABLISHED
如果我运行 awk 解析器,我会得到:
$ netstat -nl -p tcp | awk '/tcp/ {split($5,a,".") ; for(i=1; i<NF-1; i++) printf a[i] "."; printf "\n"}'
127.0.0.1.
127.0.0.1.
1)有没有办法删除“。”在 IP 地址的末尾?
2) 有没有更好的“awk”方式来获得相同的结果?
PS:我知道你可以输入类似的东西
$ netstat -nl -p tcp | perl -ape '$_=$F[4];s/((?:\d+\.){3}\d+)\D.*/$1\n/'
得到正确的结果;)
谢谢!
【问题讨论】: