在 Linux 系統下,有時候,我們可能要對一個日誌文件進行分析。比如,分析日誌文件中某個單詞或者某個特殊字符串出現了多少次。
對於匹配統計,一般用到正則方法,下面總結了幾個統計字符串個數的方法。
方法一:使用 grep 命令
grep -o '字符串' file |wc -l
方法二:使用awk命令進行統計
awk -v RS="@#$j" '{print gsub(/字符串/,"&")}' file
方法三:另一種使用awk命令進行統計的方法
awk '{s+=gsub(/字符串/,"&")}END{print s}' file
備註:上面的 file 是要統計的文件名。上面的字符串換成你具體要統計的內容。
awk簡介
awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。
簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各種分析處理。
實例
假設現在一個文件裡面的內容如下:
[root@ihh logs]# cat test.txt
userid:121212
userid:232323
userid:3434
username:3434
username:4343
然後我要統計 userid 在 test.txt 文件裡出現了多少次,那麼根據上面提供的命令,可以這樣操作:
[root@ihh logs]# grep -o 'userid' test.txt |wc -l
3
[root@ihh logs]# awk -v RS="@#$j" '{print gsub(/userid/,"&")}' test.txt
3
[root@ihh logs]# awk '{s+=gsub(/userid/,"&")}END{print s}' test.txt
3