Linux:統計ファイルの頻度


#!/bin/bash  
#Name: word_freq.sh  
#Description: Find out frequency of words in a file  
  
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
","Word","Count") ; \ for(ind in count) { printf("%-14s%d
",ind,count[ind]); } }'

動作原理紹介:
1.egrep-o"b[:]+b"$filename単語のみを出力するには、-oオプションで改行で分割された一致する文字列を印刷します.これにより、各行に単語をリストできます.
2.bは単語境界マーカーです.[:alpha:]はアルファベットを表す文字クラスです
3.awkコマンドは、各単語の反復を回避するために使用されます.
1.egrepはデフォルトで正規表現をサポートし、grepはデフォルトでサポートされていません.
2.   awk '{pattern + action}' {filenames}
awkワークフローは、「改行文字で分割されたレコードを読み込み、指定されたドメイン区切り文字でドメインを分割し、ドメインを塗りつぶし、$0はすべてのドメインを表し、$1は最初のドメインを表し、$nはn番目のドメインを表す.