1. 程式人生 > >Linux下統計出現次數最多的指定欄位值

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}' 依次對每一行進行處理,然後輸出地4個欄位

cut

cat data.txt | awk '{print $4}' | cut -c 8- 從擷取的字串第8位開始到最後

sed

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

uniq,sort

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

tail

cat data.txt | awk '{print $4}' | cut -c 8- | sed "s/'//g" | uniq -c | sort | tail -n 1 顯示最後一行資料

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