linux - word frequency

jiuyang發表於2019-03-19

linux  輸出某個檔案的單詞出現頻率

  解決方式  

cat words.txt |awk '{for(i=1;i<=NF;i++) print $i;}'|sort|uniq -c|sort -r|awk '{print $2,$1;}'

  1、讀出檔案 cat xxx.txt

  

  2、awk 逐行讀入,按空格將每行分割 然後處理 (awk 常用命令參考 https://www.cnblogs.com/xiaoleiel/p/8349487.html

    

    awk NF 每一行的單詞數量

     '{for(i=1;i<= NF;i++)print $i}' 逐行逐詞輸出單詞

  3、sort 按詞排序,將相同的詞語放在一起

  

  4、uniq -c 按詞統計次數

  

  5、sort -r 按照第一行 倒敘排序

  

  6、 awk '{print $2,$1}' 按照格式輸出

  

  

 

sort 命令引數 http://www.runoob.com/linux/linux-comm-sort.html

參  數:
  -b   忽略每行前面開始出的空格字元。
  -c   檢查檔案是否已經按照順序排序。
  -d   排序時,處理英文字母、數字及空格字元外,忽略其他的字元。
  -f   排序時,將小寫字母視為大寫字母。
  -i   排序時,除了040至176之間的ASCII字元外,忽略其他的字元。
  -m   將幾個排序好的檔案進行合併。
  -M   將前面3個字母依照月份的縮寫進行排序。
  -n   依照數值的大小排序。
  -o<輸出檔案>   將排序後的結果存入指定的檔案。
  -r   以相反的順序來排序。
  -t<分隔字元>   指定排序時所用的欄位分隔字元。
  +<起始欄位>-<結束欄位>   以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
  --help   顯示幫助。
  --version   顯示版本資訊

 

uniq http://www.runoob.com/linux/linux-comm-uniq.html

語法
uniq [-cdu][-f<欄位>][-s<字元位置>][-w<字元位置>][--help][--version][輸入檔案][輸出檔案]

引數:
-c或--count 在每列旁邊顯示該行重複出現的次數。
-d或--repeated 僅顯示重複出現的行列。
-f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位。
-s<字元位置>或--skip-chars=<字元位置> 忽略比較指定的字元。
-u或--unique 僅顯示出一次的行列。
-w<字元位置>或--check-chars=<字元位置> 指定要比較的字元。
--help 顯示幫助。
--version 顯示版本資訊。
[輸入檔案] 指定已排序好的文字檔案。如果不指定此項,則從標準讀取資料;
[輸出檔案] 指定輸出的檔案。如果不指定此選項,則將內容顯示到標準輸出裝置(顯示終端)。

 

 

  

 

 

  

 

相關文章