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 顯示版本資訊。 [輸入檔案] 指定已排序好的文字檔案。如果不指定此項,則從標準讀取資料; [輸出檔案] 指定輸出的檔案。如果不指定此選項,則將內容顯示到標準輸出裝置(顯示終端)。