linux 統計文件字段並排序

問題1:現在有一萬多條記錄,其中包含重複的記錄,每條記錄佔一行,問如何從這些記錄中找到數量排名前10的記錄?

  • $ sort datafile | uniq -c | sort -k 1 -n -r | head -n 10
  • 解析:
    • sort date
      • 表示對data文件中的內容進行排序。sort命令是對於每一行的內容根據字典序(ASCII碼)進行排序,這樣可以保證重複的記錄時相鄰的。
    • sort data | uniq -c
      • uniq -c 表示合併相鄰的重複記錄,並統計重複數。因爲uniq -c 只會合併相鄰的記錄,所以在使用該命令之前需要先排序。
    • sort data | uniq -c | sort -k 1 -n -r
      • 經過uniq -c 處理之後的數據格式形如"2 data",第一個字段是數字,表示重複的記錄數;第二個字段爲記錄的內容。我們將對此內容進行排序。sort -k 1表示對於每行的第一個字段進行排序,這裏即指代表重複記錄數的那個字段。因爲sort命令的默認排序是按照ASCII,這就會導致按從大到小進行排序時,數值2會排在數值11的前面,所以需要使用-n 參數指定sort命令按照數值大小進行排序。-r 表示逆序,即按照從大到小的順序進行排序。
    • sort data | uniq -c | sort -k 1 -n -r | head 10
      • head 命令表示選取文本的前x行。通過head 10 就可以得到排序結果中前十行的內容。


cat datafile  | awk '{print $1}'  |  sort | uniq -c | sort -k 1 -n -r | wc -l > result.txt

按照文件中第一個字段,做統計

  • awk ‘{print $1}’:日誌記錄中的第一個字段


統計一個文件中所有單詞,並按出現頻率排序 (單詞以'\t', ' ', '\n'分割)·

tr -s "\t| " "\n" < list_of_not_defined_keywords.csv |  sort | uniq -c | sort -k 1 -n -r


參考文章:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章