我有一個大型的服務器日誌,包含條目: 不是從模塊
馬上就找到之後它是一個引號符合模塊的位置。該文件長度超過4,800行,每個模塊可能會出現超過100次。所以,我想要做的就像是一個wc -l,但是隻顯示服務器日誌的模塊名稱部分中的唯一值的數量。有任何想法嗎?
我有一個大型的服務器日誌,包含條目: 不是從模塊
馬上就找到之後它是一個引號符合模塊的位置。該文件長度超過4,800行,每個模塊可能會出現超過100次。所以,我想要做的就像是一個wc -l,但是隻顯示服務器日誌的模塊名稱部分中的唯一值的數量。有任何想法嗎?
grep -oP '(?<=not found from Module ")[^"]+(?=")' logfile | sort -u | wc -l
awk '{count[$NF]++} END{ for (mod in count) print mod, count[mod] }' file
可能是接近你想要什麼,但它很難沒有一些樣本輸入和期望輸出猜測。
perl -nlwe '$a{$_}++ }{ print "$_ : $a{$_}" for keys %a' log.txt
爲每一行創建一個散列鍵,然後在最後打印鍵。
grep 'entry: not found from Module' logfile | sort -u | wc -l
在調用'uniq'前忘記'排序' –
@WinnieNicklaus是的,只是修正了它。我只想指出我的答案,可能沒有必要在這裏使用Perl的正則表達式。 –
嗯,可能有其他信息而不僅僅是模塊名稱,所以最簡單的方法是隻提取模塊名稱而不是包含模塊名稱的整行 –
爲什麼不使用'uniq -c'來計算所有唯一值? – squiguy
是一個「引號」單引號'''還是雙引號'''並且在模塊ID末尾是否有匹配的?發佈一些小的,有代表性的樣本輸入和期望的輸出。 –