linux shell 統計文件單詞出現次數


#! /bin/bash
#文件名:word_freg.sh
#用途:計算文件中單詞的詞頻

if [ $# -ne 1 ]
then
echo "Usage:$0 filename"
exit -1
fi

filename=$1

egrep -o "\b[[:alpha:]]+\b" $filename | \  
awk '{ count[$0]++ }
END{ printf("%-14s%s\n","word","count")
  for(ind in count){

    printf("%-14s%d\n",ind,count[ind])

  }

}'

輸出如下:

[root@server script01]# bash word_freg.sh words.txt
word    count
used     1
this       2
counting    1

說明:

egrep -o "\b[[:alpha:]]+\b" $filename | \  #用於輸出單詞,-o選項打印出自由換行符分割的匹配字符序列。

\b:單詞邊界標記符

[:alpha:]:表示字母的字符類。

awk命令用來避免對每一個單詞進行迭代。因為awk默認會逐行執行{}塊中的語句,就不需要編寫循環了。借助關聯數組,當執行count[$0]++時,單詞計數就增加。最后,在END{}語句塊中通過迭代所有的單詞,就能打印出單詞及他們各自出現的次數。


免責聲明!

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



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