簡體   English   中英

如何在Bash中使用“排序”對按數字和字母順序排列(反過來)的兩場輸出進行排序?

[英]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),並且第二列中有兩個不同的字符串,其中一個以小寫字母開頭,另一個以大寫字母開頭(例如appleOrange ),那么它將按照我想要的相反字母順序進行排序:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM