庆典删除字符
问题描述:
之前的一切,我有以下几点:庆典删除字符
netstat -tuna | awk '{ print $4; }' | sed -e '1,2d'
返回:字符:
10.20.26.143:51697
10.20.26.143:51696
10.20.26.143:51698
10.20.26.143:51693
10.20.26.143:51695
10.20.26.143:51694
:::22
0.0.0.0:68
0.0.0.0:49625
0.0.0.0:5353
:::48727
:::5353
返回所有开放端口的列表..如何将我的之前删除一切吗?请注意几个:::而不是: 我只想让它返回端口,删除最后的所有文本:
我希望它在一个bash命令中。
非常感谢!
答
只需用一个awk命令来完成。无需链太多
netstat -tuna | awk 'NR>2{ k=split($4,a,":");print a[k] }'
或
netstat -tuna | awk 'NR>2{ sub(/.*:/,"",$4);print $4 }'
或Ruby(1.9+)
如果你想唯一的端口netstat -tuna | ruby -ane 'puts $F[3].sub(/.*:/,"") if $.>2'
,
netstat -tuna | awk 'NR>2{ sub(/.*:/,"",$4); uniq[$4] }END{ for(i in uniq) print i }'
答
因此很明显, you can tuna network, but you can't tuna fish
以下将打印的所有开放端口
netstat -tuna | awk -F':+| +' 'NR>2{print $5}'
下面将打印所有独特开放的端口,即没有按升序排列
netstat -tuna | awk -F':+| +' 'NR>2{print $5}' | sort -nu
答
分类重复添加到您的sed命令:
';s/.*:/:/g'
netstat -tuna | awk '{ print $4; }' | sed -e '1,2d;s/.*:/:/g'
应该可以工作。
优秀的答案!非常感谢 – rmartinez 2011-04-04 23:51:27