我需要按字母顺序排序这样的东西
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 sort
或https://pubs.opengroup.org/onlinepubs/9699919799.2018edition/utilities/sort.html
编辑考虑添加到问题中的新要求:
排序键将是波浪号 ( ~
) 字符之后到行尾的所有内容,或者是第一个和第二个波浪号之间的所有内容。这意味着该Youtube
部分将包含在排序键中。当然,这仅当存在一对具有相同foo"
或bar"
部分的线时才相关。
要获得不区分大小写的排序,您必须添加 option -f
。