如何按不是开头的字母按字母顺序对行进行排序?

如何按不是开头的字母按字母顺序对行进行排序?

我需要按字母顺序排序这样的东西

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 排序。有人知道如何做到这一点吗?提前致谢。

编辑:为了澄清,我需要对它们进行排序,并且只有“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

答案1

根据问题的输入,命令

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

相关内容