Linux sort -n 與 -g 排序對比


公司業務需要,天天用awk統計數值然后排序,出問題了,如下:

count.sh 是一個統計腳本,把awk輸出的值按占比、條數、類型 在重新輸出

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -nk3
91.51% 345         0
Total 377
2.65% 10            1
5.84% 22            2

0與1之間加了個total值,我想要的結果是total排在第一行,然后是的0、1、2,

后來找到的解決方法:

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -nk3   -k2r
Total 377
91.51% 345         0
2.65% 10            1
5.84% 22            2

在第三列按照從小到大排序后,再把第二例按照倒序排列就行了。

出現新的問題:

(1)有時候會出現按照第二例倒序排序失敗。       (以前工作中遇見)

(2)有時候在添加第二列排序后,整個排序混輪。(以前工作中遇見)

在多實驗了幾次后,可以肯定是選項 -n 有問題,找了一個寫博客時間久的,點擊量還不錯的,結果如下:

看紅色框里內容,我看了好幾個博客 ,都是這樣解釋的。然后我又查看我自學的網站:菜鳥教程上,也是這么解釋的。但就是解釋不通我上面的問題。我於是 sort --help,逐條看每個選項,讀第二遍的時候,發現問題了:

-n 選項有數值改為了字符串 ;在 -r選項的旮旯里,還有一個-g選項。按理來說,這個仔細看的話也是很容易發現的,但是我以前的三方終端顯示的是英文版,長長的一溜,就沒有仔細看過,我記得第一才看時為了方便,專門去博客園,就我上面截圖的那家仔細看了中文版的,悲催的發生了今天的事。然后我就把我的終端改為中文版的,細看sort詳解才發現這個問題。

來看-g的結果:

awk -F\| '{print $16}' *MQTT*  | ~/count.sh  | sort -gk3
Total 377
91.51% 345        0
2.65% 10           1
5.84% 22           2

   完美。只能說,人家博客寫得那個年代,確實是那樣解釋的,但是到了現在,sont命令有了更細的更新,而我還在用以前的方法來解決現在的問題,有時候就不行了。我們在相信前人的同時,更要自己動手來查找解決。

  像上面發生的問題,其實在很多時候,根本就不是問題,對於我來說,假如我不是要把結果復制下來,為了看起來更整齊一些,我根本就不會去仔細研究,發現-g 與-n區別,沒有追求完美的心態,得過且過,有問題,不可怕,可怕的是習慣的去遺忘。

  謹記,再小的問題,也會引起連鎖反應引起大問題。

  

 

  


免責聲明!

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



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