2016-05-22 20 views
1

我有許多AWS VPC流日誌(它們都是文本文件),需要篩選它們以在特定範圍內查找唯一的IP。解析唯一IP的AWS VPC流日誌

我知道我可以使用grep命令逐個搜索所有文件,並將結果輸出到新文件,但grep顯示包含搜索項的整個行。我想要做的是一旦grep找到一個以某些第一個和第二個八位字節開頭的IP地址,我想將兩個IP地址和兩個數字複製到一個新文件中,並且該文件不會有任何重複。

如果我有以下日誌:

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 

...我想用grep搜索開始的10.97所有IP。並從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可以執行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 

如果這不是你想要什麼,然後編輯你的問題,以澄清您的要求。