Sort

如何按不在開頭的字母按字母順序對行進行排序?

  • April 15, 2021

我需要按字母順序對這樣的東西進行排序

https://www.youtube.com/feeds/videos.xml?channel_id=ABC "~foo" Youtube
https://www.youtube.com/feeds/videos.xml?channel_id=XYZ "~bar" Youtube

等等。我需要它來獲取該波浪號之後的字元並以這種方式對其進行排序,而不是按照通常的通道 ID 進行排序。有人知道如何做到這一點嗎?提前致謝。

編輯:為了澄清,我需要它們排序 az 並且只有“foo”、“bar”部分(而不是Youtube標籤),並且應該忽略大寫/小寫的差異,我只需要處理英文字元。所以它的預期外觀是

https://www.youtube.com/feeds/videos.xml?channel_id=XYZ "~bar" Youtube
https://www.youtube.com/feeds/videos.xml?channel_id=ABC "~foo" Youtube

根據問題的輸入,命令

sort -t'~' -k2 inputfile

印刷

https://www.youtube.com/feeds/videos.xml?channel_id=XYZ "~bar" Youtube
https://www.youtube.com/feeds/videos.xml?channel_id=ABC "~foo" Youtube

請參閱man sorthttps://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/sort.html

編輯以考慮添加到問題中的新要求:

排序鍵將是波浪號 ( ~) 字元之後直到行尾的所有內容,或者是第一個和第二個波浪號之間的所有內容。這意味著該Youtube部分將包含在排序鍵中。當然,這僅在有一對具有相同foo"bar"部分的線時才有意義。

要獲得不區分大小寫的排序,您必須添加 option -f

引用自:https://unix.stackexchange.com/questions/645248