[英]How to use 'sort' in Bash to sort a two-field output numerically and alphabetically (in reverse)?
我在使用Bash的sort
執行排序時遇到一些困難。 我的目標是我要首先按照第一列中的數字對所有內容進行排序,並以最大值為准。 如果有任何聯系,那么我想看一下第二列,並以相反的字母順序排序(關於ascii值,例如,在ascii值中, a
緊隨B
,但是我希望排序到有a
先來,之前B
)。
我當前的排序嘗試是sort -t : -k 1,1nr -k 2.1,2.1
如果我遇到第一列中存在數字聯系的情況(例如,兩個數字均為5),並且第二列中有兩個不同的字符串,其中一個以小寫字母開頭,另一個以大寫字母開頭(例如apple
與Orange
),那么它將按照我想要的相反字母順序進行排序:
5 apple
5 Orange
但是,如果第一列中有數字聯系,並且在第二列中,兩個字符串都以大寫字母開頭,例如'Apple'
和'Orange'
,那么在這種情況下,它不會顛倒字母順序。 我會得到:
5 Apple
5 Orange
而我想要的,與第一個示例一樣,按相反的字母順序排列是:
5 Orange
5 Apple
是否有可能做到這一點?
在兩列中都使用r
。 使用2,2
作為第二位置,您也要在第2列開始排序,並在第2列結束。 另外,請關閉可能會改變字符串排序方式的語言環境。
LC_COLLATE=C sort -k1,1nr -k2,2r
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.