我有以下内容:
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命令中使用它。
提前多多感谢!
答案 0 :(得分:3)
添加到您的sed命令:
';s/.*:/:/g'
netstat -tuna | awk '{ print $4; }' | sed -e '1,2d;s/.*:/:/g'
应该有用。
答案 1 :(得分:2)
只需使用一个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 }'
答案 2 :(得分:1)
显然,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