2016-02-10 41 views
-1

我有一個日誌文件,我需要輸出日期和一些狀態代碼。另外我使用||作爲分隔符並從數據中刪除不需要的符號。下面是它的樣子:awk日期紀元日誌文件和打印其他列

cat logfile.log | awk 'BEGIN { FS = "\\|\\|" } { gsub("/","-") sub(":", " ") gsub("\\[", "") gsub("\\+0000]", "")}; { print $15 $12 }' | uniq -c 

此輸出:

22 25-Jan-2016 01:53:52 85.10.210.199 
    1 25-Jan-2016 01:53:52 66.249.93.77 
    18 25-Jan-2016 01:53:52 85.10.210.199 
    1 25-Jan-2016 01:53:52 88.232.191.231 

在此之後,我需要時間轉化爲劃時代仍打印列$ 1和$ 3

我想才達到:

22 1453686832 85.10.210.199 
    1 1453686832 66.249.93.77 
    18 1453686832 85.10.210.199 
    1 1453686832 88.232.191.231 

我可以將日期轉換爲紀元,但我失去了其他列。我怎樣才能讓他們也與轉變的時間?

這是我的RAW日誌文件:

[] || || || || [] || http || 40080 || 176.237.167.102 || [] || [-] || [0.072] || 176.237.167.102 || - || - || [25/Jan/2016:06:30:26 +0000] || "POST /checknewmsg HTTP/1.1" || 200 || 265 || 895 || "http://google.com/post」 || "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36" || "-" || [TR] 
+0

失去了什麼列? – 123

+0

第一列和第三列我輸了,如果我打印日期到日期-d「$ date」+%s – SScast

+0

如果你有GNU awk,你可以使用[strftime](https://www.gnu.org/software/ gawk/manual/html_node/Time-Functions.html) – 123

回答

0

既然你已經一點點不願提供所要求的信息在你的問題,IDK的,如果這是你在找什麼或沒有,但與GNU awk for mktime()

$ cat tst.awk 
BEGIN { FS="\\s*[|][|]\\s*" } 
{ 
    split($15,a,/[][\/: ]/) 
    a[3] = (match("JanFebMarAprMayJunJulAugSepOctNovDec",a[3])+2)/3 
    secs = mktime(a[4]" "a[3]" "a[2]" "a[5]" "a[6]" "a[7]) 
    cnt[secs OFS $12]++ 
} 
END { 
    for (key in cnt) { 
     print cnt[key], key 
    } 
} 

$ cat file 
[] || || || || [] || http || 40080 || 176.237.167.102 || [] || [-] || [0.072] || 176.237.167.102 || - || - || [25/Jan/2016:06:30:26 +0000] || "POST /checknewmsg HTTP/1.1" || 200 || 265 || 895 || "http://google.com/post」 || "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36" || "-" || [TR] 

$ awk -f tst.awk file 
1 1453725026 176.237.167.102 
+0

是的,這只是我需要統計uniq時間戳的行數,而不是IP地址,即使它們被打印了。我使用的是GNU awk。非常感謝! – SScast

+0

因此,再次(以及最後一次)編輯您的問題以提供樣本輸入和給定輸入的預期輸出。特別是包含一種情況,即您有一個時間戳的多個IP地址,因爲您根本沒有描述過這種情況下的輸出要求,您可能需要採取多種方式來處理它。 –