String 按最后一个“";“字段”;(在“符号”之后)

String 按最后一个“";“字段”;(在“符号”之后),string,bash,String,Bash,我正在寻找一种方法,按最后一个“字段”按字母顺序对行进行排序。 因此: 如果我的输出是(可能通过grep命令): 结果应该是: root/alphabet.png downloads.png public/system.png 因为“字母表”、“下载”和“系统”是按字母顺序排列的 我是否应该首先用“cut-f2-d”/“sort”对它们进行剪切和排序?然后合并路径的其余部分 还是有更简单的方法 任何帮助都将不胜感激 谢谢 (示例已修改)排序有一个-t参数来指定字段分隔符,和-k来指定要排序的字

我正在寻找一种方法,按最后一个“字段”按字母顺序对行进行排序。 因此:

如果我的输出是(可能通过grep命令):

结果应该是:

root/alphabet.png
downloads.png
public/system.png
因为“字母表”、“下载”和“系统”是按字母顺序排列的

我是否应该首先用“cut-f2-d”/“sort”对它们进行剪切和排序?然后合并路径的其余部分

还是有更简单的方法

任何帮助都将不胜感激

谢谢


(示例已修改)

排序有一个
-t
参数来指定字段分隔符,和
-k
来指定要排序的字段,以便您可以编写:

sort -t/ -k 3 

这将指定第三个字段,其字段分隔符为
/

sort -t'/' -k 3 

由于字段的数量是动态的,您可以在排序之前将最后一个字段附加到行的开头,然后在以下操作之后将其删除:

$ awk -F'/' '{print $NF,$0}' file | sort | awk '{print $2}'
mike/root/alphabet.png
mike/downloads.png
mike/public/system.png

谢谢大家!!我终于找到了我想要的东西

首先

然后

最后

sed -n 's/[^/]*\///p'
输出将是

folder/file.png
file.png
folder/folder2/file.png

最后一个字段是否总是在位置#3?不,不幸的是,最后一个字段也应该在位置#2或#4。嗯,在这种情况下,所有这些答案都不适用于您:(感谢Barmar的建议。但可能会出现输出路径更少或更深的情况。因此我无法决定字段排序。我希望排序始终是最后一个字段,即文件名(对不起,我的第一个也是唯一的示例非常糟糕)。请将其标记为已批准的答案。您能解释一下
sed
-行的作用吗?
sort 
sed -n 's/[^/]*\///p'
folder/file.png
file.png
folder/folder2/file.png