私のnetstat出力から抽出したいと思います32000-64000
。これを試しましたが、egrep "^[3,4,5,6]"
最初から始める必要があります32000
。awk
どのようなスクリプトを使用する必要がありますか?
Linux# netstat -nau
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 10.0.0.20:55238 0.0.0.0:*
udp 0 0 10.0.0.20:55240 0.0.0.0:*
udp 0 0 10.0.0.20:31242 0.0.0.0:*
udp 0 0 10.0.0.20:55244 0.0.0.0:*
udp 0 0 10.0.0.20:32246 0.0.0.0:*
udp 0 0 10.0.0.20:55248 0.0.0.0:*
udp 0 0 10.0.0.20:12250 0.0.0.0:*
udp 0 0 10.0.0.20:19252 0.0.0.0:*
答え1
使用されなくなったので、上位レベルのnetstat
後続バージョンを試してみてはいかがでしょうかss
。
ss -nau '( sport >= 32000 and sport <= 64000 )'
答え2
アッ解決策:
netstat -nau | awk -F'[[:space:]]+|:' 'NR>2 && $5>=32000 && $5<=64000'
あなたの場合、出力は次のとおりです。
udp 0 0 10.0.0.20:55238 0.0.0.0:*
udp 0 0 10.0.0.20:55240 0.0.0.0:*
udp 0 0 10.0.0.20:55244 0.0.0.0:*
udp 0 0 10.0.0.20:32246 0.0.0.0:*
udp 0 0 10.0.0.20:55248 0.0.0.0:*
-F'[[:space:]]+|:'
- フィールド区切り記号NR>2 && $5>=32000 && $5<=64000
- ポート番号が必要な範囲内であることを確認してください。
選ぶエグレフ解決策:
netstat -nau | egrep ':(3[2-9]|[45][0-9])[0-9]{3}|6[0-3][0-9]{3}|64000'
(3[2-9]|[45][0-9])[0-9]{3}
32000
- からまでの数字を扱います。59999
6[0-3][0-9]{3}|64000
60000
- からまでの数字を扱います。64000