2つのフィールドを一緒に印刷したいです。すべてのオープンポートとそれを使用するアプリケーションです。以下は私のコマンドですが、ポート番号だけを印刷し、プログラムフィールドはまだ欠けています。
netstat -lnt -u -p | awk '{print $4}' | sed 's/.*://' | sort -n | uniq
「PID/プログラム名」が「java」を返すようなプログラム名を印刷するように変更するにはどうすればよいですか?
" "の例はnetstat -lnt -u -p
次のとおりです。
tcp, 0, 0, 10.194.194.21:36195, 0.0.0.0:*, リスニング, 2969/java
ポート番号とプログラム名だけを見たいです。
36195 java
答え1
6番目と4番目のフィールドを印刷する必要があります。
これにより、期待した結果が返されます。 (コマンド結果がわからないので、より効率的な方法があるようです。)
netstat -lnt -u -p | awk '{print $4,$6}' | sed 's/.*://' | sort -n | uniq
固有のポートとプログラム名を取得する方法は次のとおりです(sed
追加のsort
コマンドは不要で、次のことができます)。ユニークおよび対応する-u
オプション):
netstat -lnt -u -p | awk -F"[,:/]" '{print $5,$NF}'| sort -un
36195 java
答え2
短縮されたソリューション:
netstat -lpunt | awk -F' +|:+|/' '$5{print $5,$10}' | sort -n
-F' +|:+|/'
- フィールド区切り記号(スペース、コロン、またはスラッシュ)$5
- ポート番号$10
- プログラム名