Linux下統計出現次數最多的指定字段值


假設桌面上有一個叫“data.txt”的文本,內容如下:

{id='xxx' info='xxx' kk='xxx' target='111111' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='777' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='yyyy' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='5555' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='777' dd='xxx'}
{id='xxx' info='xxx' kk='xxx' target='555566' dd='xxx'}

要求:找出“data.txt”文件中target字段出現次數最多的值。

Linux下統計字符串

在linux終端通過常用工具進行解決,方法如下:

其中組合用到了一些命令行和工具,有cat、awk、cut、sed、sort、uniq、tail——

cat

cat data.txt,獲取並顯示“data.txt”文件的每一行內容:

awk

cat data.txt | awk '{print $4}',顯示傳入的每一行中第四個字段:

cut

cat data.txt | awk '{print $4}' | cut -c 8-,從傳入字符串的第八位開始,截取字符串到最后:

sed

cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g",去掉傳入字符串中包含的 ' 字符:

sort

cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | sort,對結果進行排序:

uniq

cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | sort | uniq -c | sort,去重並統計每種字符串出現的次數:

tail

cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | sort | uniq -c | sort | tail -n 1,顯示結果中的最后一行:

我們至此已知出現次數最多的target字段值為777,出現次數為2。若有多個相同次數的字段值出現,可以通過修改tail -n后面接的數值來查看,改為10即顯示結尾10行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM