3

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

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

mike/downloads.png
mike/public/system.png
mike/root/alphabet.png

结果应该是:

root/alphabet.png
downloads.png
public/system.png

因为 "alphabet" 、 "downloads" 和 "system" 是按字母顺序排列的。

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

还是有更简单的方法?

任何帮助将不胜感激。

谢谢

(示例修改)

4

4 回答 4

4

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

sort -t/ -k 3 
于 2013-04-20T17:42:54.810 回答
2

谢谢你们!我终于找到了我想要的东西

第一的

awk -F'/' '{print $NF,$0}' 

然后

sort 

最后

sed -n 's/[^/]*\///p'

输出将是

folder/file.png
file.png
folder/folder2/file.png
于 2013-04-21T12:27:28.267 回答
0

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

$ awk -F'/' '{print $NF,$0}' file | sort | awk '{print $2}'
mike/root/alphabet.png
mike/downloads.png
mike/public/system.png
于 2013-04-20T22:25:56.137 回答
0

这指定了具有字段分隔符的第三个字段/

sort -t'/' -k 3 
于 2013-04-20T17:45:41.130 回答