Linux sort n 與 g 排序對比

2022-01-20 08:14:21 字數 1508 閱讀 3919

count.sh 是乙個統計指令碼,把awk輸出的值按佔比、條數、型別 在重新輸出

awk -f\| '' *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\| '' *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\| '' *mqtt*  | ~/count.sh  | sort -gk3

total 377

91.51% 345        0

2.65% 10           1

5.84% 22           2

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

基本的排序規則:

除非指定了『-r』引數,否則排序的優先順序按下面規則排序

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

歸併排序與逆序對

歸併問題按照分治三步法進行介紹 劃分問題 把序列分成元素個數盡量相等的兩半 遞迴求解 把兩半元素分別排序 合併問題 把兩個有序表合併成乙個 借鑑乙個部落格的圖 排序演算法 四 之歸併排序 可以看到這種結構很像一棵完全二叉樹,本文的歸併排序我們採用遞迴去實現 也可採用迭代的方式去實現 分階段可以理解為...

歸併排序與逆序對

最近學習逆序對,發現竟然要學習歸併排序,於是只好學了一下 之前一直用c stl的sort函式 發現思想和線段樹竟然驚人的相似,先放一張圖你們就懂了 怎麼樣,是不是發現這就是一棵線段樹!其實歸併排序利用了二分的思想,即分而治之。歸併排序是一種穩定的方法,時間複雜度 o nlogn 空間複雜度 o n ...

歸併排序與逆序對

題目描述 給定你乙個長度為n的整數數列。請你使用歸併排序對這個數列按照從小到大進行排序。並將排好序的數列按順序輸出。輸入格式 輸入共兩行,第一行包含整數 n。第二行包含 n 個整數 所有整數均在1 109範圍內 表示整個數列。輸出格式 輸出共一行,包含 n 個整數,表示排好序的數列。資料範圍 1 n...