2012-04-24 9 views
15

私は何百万ものパケットを見渡すことができ、パケットが特定のポート番号に何回送信されたかを知りたいとします。grepとの一意の一致の数を出力するにはどうすればよいですか?

10:27:46.227407 IP 85.130.236.26.54156 > 139.91.133.120.60679: tcp 0 
10:27:46.337038 IP 211.142.173.14.80 > 139.91.138.125.56163: tcp 0 
10:27:46.511241 IP 211.49.224.217.3389 > 139.91.131.47.6973: tcp 0 

私はので、ここで第二のポート番号を通じて見たい:

60679、53163、6973、など

だから私は使用することができます。ここ

は、パケットの一部を以下に示します。

grep -c '\.80:' output.txt 

ポート80を使用した回数を数えます。しかし、使用されたすべてのポートと、このファイルで何回見つかったかを表示する方法があります。これと望ましいので、私が最も頻繁に使用されたポートを見ることができますあまりにもソートされたような何か:

.80: - 54513 
.110: - 12334 
.445: - 412 

答えて

33

uniq -cを参照してください。必要なビットを抜き出し、結果をソートし、uniqでパイプし、出力をソートする必要があります。

egrep '\.[0-9]+:' output.txt | sort | uniq -c | sort -nr 

明確化:それはあなたのoutput.txtとフォーマットがどのようなものかは明らかではないですが、あなたが実際におそらくcutを経由して、ポート番号のビットをカットしたいと思うので、私はここではgrepを使用しました。この多分ような何かまたはawk

編集:ポートを取得するには、コロンに再度期間に一度切断してすることができます(。または、同じことを達成するためにダース他の方法のいずれか)

cut -d. -f10 < output.txt | cut -d: -f1 

その意志をポートの一覧を並べ替えて表示します。次に:

+0

ありがとうございました。しかし、私は切り傷に問題があります。正規表現だけを使う方法はありますか?ポート番号は毎回同じ列とスペースにないためです。 – Dragonfly

+0

Cutは正規表現を使用しません。あなたの質問を編集し、いくつかの例の行を追加して、フォーマットを見ることができます。 –

+0

私はいくつかの例を編集しました。私はそれから何をお勧めしますか? – Dragonfly

関連する問題