我从这个命令得到以下输出:
netstat -ant |grep LISTEN | awk '{ print $4 }'
0.0.0.0:111
192.168.122.1:53
0.0.0.0:22
127.0.0.1:631
127.0.0.1:25
:::111
:::22
::1:631
::1:25
如何从输出中提取最后一个端口号?
答案 0 :(得分:2)
附加到您的行
| sed 's/.*://'
答案 1 :(得分:2)
您可以使用rev
和cut
执行此操作:
netstat -ant | awk '/LISTEN/ { print $4 }' | rev | cut -f1 -d: | rev
rev
反转输出,以便将最后一个字段翻转到前面cut -f1
提取第一个字段rev
将字符串反转回其原始方向你也可以只用awk
来做,效率更高:
netstat -ant | awk '/LISTEN/ { n = split($4, a, ":"); print a[n] }'
split
按分隔符拆分字符串并将其存储在数组中并返回数组的大小print a[n]
打印数组的最后一个元素(注意数组索引在awk中以1开头)答案 2 :(得分:0)
尝试使用awk并告诉我这是否对您有帮助。
netstat -ant | awk '/LISTEN/{sub(/.[^:]*/,"");gsub(/:| .*/,"");print}'
上面会为第4列提供端口,但是如果你想在状态(LISTEN / TIME_WAIT)等之前获取第4列的输出,那么下面也可以帮助你。
netstat -ant | awk '/LISTEN/{split($5, a,":");print a[2]}'