2016-05-22 9 views
1

複数のAWS VPCフローログ(すべてテキストファイル)があり、特定の範囲内の一意のIPを探すためにそれらを調べる必要があります。AWSを解析する固有のIP用のVPCフローログ

私は、すべてのファイルを1つずつ検索して結果を新しいファイルに出力することができますが、grepは検索語を含む行全体を表示することができます。私がしたいのは、特定の1番目と2番目のオクテットで始まるIPアドレスをgrepが見つけたら、2つのIPアドレスと2つの数字を新しいファイルにコピーし、そのファイルに重複がないようにしたいのです。私は次のログを持っている場合

004935:2016-05-08T02:05:42.000Z 2 531988440191 eni-7e2eee06 10.97.14.19 10.98.14.173 2222 52342 6 3 164 1462673142 1462673202 ACCEPT OK 

004935:2016-05-08T02:05:42.000Z 2 531988440191 eni-7e2eee06 10.96.14.173 10.97.14.13 3333 52334 6 3 164 1462673142 1462673202 ACCEPT OK 

004935:2016-05-08T02:05:42.000Z 2 531988440191 eni-7e2eee06 10.1.8.3 10.2.9.9 3333 52334 6 3 164 1462673142 1462673202 ACCEPT OK 

004935:2016-05-08T02:05:42.000Z 2 531988440191 eni-7e2eee06 10.96.14.173 10.99.14.13 3333 52334 6 3 164 1462673142 1462673202 ACCEPT OK 

004935:2016-05-08T02:05:42.000Z 2 531988440191 eni-1f0eee06 10.96.14.173 10.99.14.13 3333 52334 6 3 164 1462673142 1462673202 ACCEPT OK 

...私は10.97で始まるすべてのIPを検索するためにはgrepを使用したいと思います。 10.96から始まります。

これらのサンプルのログに基づいて、私は(空行なし)新しいテキストファイルに次のを見てみたいと思います。これまでのところ

10.97.14.19 10.98.14.173 2222 52342 

10.96.14.173 10.97.14.13 3333 52334 

、私はコマンドを持っている:

grep -r '10\.97\.\|10\.96\.' * > ../results.log 

誰かが残りの部分を得るために正しい方向に向けることができますか?

答えて

0

しかし、私はそれが助けてくれると思います。 grep -ir '10\.97\.\|10\.96\.' /tmp/<yourfiles> | awk '{print $5, $6, $7, $8}' > /results.log

+0

これは重複を排除するものではなく、awkはgrepが行うことができる有用なことをawkが行うことができるので、awkを使用しているときはgrepは必要ありません。 –

0

投稿された予想される出力は、10.96.14.173 10.99.14.13 3333 52334行が欠落しているため、あなたのしたいことの説明と一致しません。これは、あなたが記述したことを行います:

$ awk '{$0=$5 FS $6 FS $7 FS $8} /(^|)10\.9[67]\./ && !seen[$0]++' file 
10.97.14.19 10.98.14.173 2222 52342 
10.96.14.173 10.97.14.13 3333 52334 
10.96.14.173 10.99.14.13 3333 52334 

あなたが望むものでない場合は、要件を明確にするために質問を編集してください。

0

AWSマーケットプレイスでこれを正確に行うツールがあり、安価です。ログを実際に使用可能にするのは良いアドオンです。チェックアウトの価値があるかもしれません:https://aws.amazon.com/marketplace/pp/B074N3YQ1P

関連する問題