如何對具有多個先決條件的字串進行排序?

如何對具有多個先決條件的字串進行排序?

我有一堆字串(大約 300 個),它們都是 4 個字母,例如 XYZA, ZHF3, RTt2 etc.我想根據 2 個要求對它們進行排序。

  1. 按最後 2 個字母的順序對它們進行排序
  2. 根據前 2 個字母對包含相同最後 2 個字母的單字進行排序

這意味著我有 XXYY 格式的字串,並且希望使用顯示的規則對它們進行排序。

我正在嘗試這樣做,sort -k.1.3,1.4但具有相同的內容是隨機排序的,例如15AA, a2AA, 0CAA etc.我怎麼能擺脫它?

答案1

-k可以多次使用。當有多個鍵字段時,只有在所有較早的鍵比較相等後才會比較後面的鍵。

<datafile sort -k 1.3,1.4 -k 1.1,1.2

請記住排序取決於LC_COLLATE.

答案2

執行相反的操作 – 先按前兩個字母,然後是最後兩個字母。我認為你甚至可以這樣做:

cat file | sort | sort -k 1.3 -s

sort命令可以執行穩定的排序,即如果兩行“相等”,它將保留它們彼此的相對順序。因此,在第二步驟中,具有相同第 3-4 個字母的行將方便地保留其與第一步的順序。

相關內容