
我有一堆字串(大約 300 個),它們都是 4 個字母,例如
XYZA, ZHF3, RTt2 etc.
我想根據 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 個字母的行將方便地保留其與第一步的順序。