2011-07-26 22 views
1

在比較時間戳時,我很難找出如何匹配以在兩個不同文件中查找匹配項。我想匹配的字段的格式爲:編寫一個比較兩個日誌文件比較時間戳的bash腳本

7月26日9時33分02秒

我試圖逐行讀取文件中的行,並使用 awk '{print $1,$2,$3}'只獲取並存儲時間戳其中一個文件。我一直在四處尋找,看到這個例子:

awk 'FNR==NR{!a[$3]++;next }{ b[$3]++ } 
END { 
for(i in a) { 
    for(k in b) { 
    if (a[i]==1 && i ~ k) { print i } 
    } 
    } 
}' $FILE $FILE2 

這八九不離十的作品,但它在我頭上的那一刻方式。這兩個文件可以在/ var/log/syslog和/var/log/auth.log中找到(使用Ubuntu 11.04)

我環顧了其他例子,無法將它應用到我的應用程序。 謝謝

+0

除非需要在bash中完成,否則您可能會更改標題。也許像「整理文件之間的時間戳」一樣。因爲你對syslog和auth.log感興趣,所以這可能是serverfault的一個很好的問題。 – Paul

回答

0

假設$FILE$FILE2包含時間戳的列表,你可以以這樣的方式,它是從其他領域用空格隔開格式化時間戳:

join <(sort -k 1b,1 $FILE) <(sort -k 1b,1 $FILE2) 

輸出將是所有的時間戳存在於兩個文件中。

+0

只是爲了重新澄清系統日誌中的日誌條目,形式爲:'Jul 26 11:35:44 bdouglas kernel:[70761.603498] usb 2-1.1.4:使用ehci_hcd和地址12的新型高速USB設備'並且auth.log中的一個條目是'Jul 26 13:17:01 bdouglas CRON [11888]:pam_unix(cron:session):會話關閉了用戶root',我在長時間運行後會分組來自auth.log的時間戳條目與來自syslog的條目與時間戳進行比較。 – random0munky

+0

兩個輸入重定向..呵呵? –

+1

@yi_H這是[過程替代](http://tldp.org/LDP/abs/html/process-sub.html) – mgalgs