2010-08-21 44 views
-1

我有格式的日誌文件獲取重複的ID在bash

ID操作

ID成功的消息

第二個ID是一樣的,但是,如果只在操作成功。我怎樣才能從日誌中獲得這兩行文件?

+1

我不知道你在這裏要求什麼。 – 2010-08-21 13:17:44

回答

0

它的靈長類動物,但你可以做這樣的事情很容易:

cat file.log | cut -d " " -f1 | uniq -d > succesfulOperationIDs.dat 

while read line 
do 
    grep ^$line file.log > successLog.log 
done < succesfulOperationIDs.dat 

rm -f succesfulOperationIDs.dat 

這將創建一個多次出現的ID列表(假設空間是正確的分隔符),然後把所有的行與開始ID到一個新的文件。

0

試試這個:

awk '{if ($1 == previd) {print prevline; print} else {previd = $1; prevline = $0}}' logfile > newfile 

它假定成功消息緊跟操作消息。

如果不是的話,那麼試試這個:

awk '{if (ids[$1]) {print lines[$1]; print} else {ids[$1] = $1; lines[$1] = $0}}' logfile > newfile 

如果操作和成功消息成對出現比具有相同ID一次,你可能要跟蹤每一次復位對輸出:

awk '{if (ids[$1]) {print lines[$1]; print; delete ids[$1]; delete lines[$1]} else {ids[$1] = $1; lines[$1] = $0}}' logfile > newfile