Unix:按行中的最后一个数字排序

6

如何按行中最后一个数字对文件进行排序?

假设每行的最后一个字符是数字。输入:

facebook.com/pageA,2,11,11
facebook.com/pageB,0,0,20
facebook.com/pageC,0,0,6
facebook.com/pageD,1,22,239

期望输出:

facebook.com/pageC,0,0,6
facebook.com/pageA,2,11,11
facebook.com/pageB,0,0,20
facebook.com/pageD,1,22,239

需要帮忙吗?


假设这些行具有相同数量的逗号分隔列。您可以阅读man sort以查找如何指定分隔符以及如何进行数字排序。 - Jokester
你的例子和问题不符。你想要哪一个:按最后一位数字还是按最后一个数字排序? - Adam Liss
最后一个数字..但是数字和位数有什么区别呢?它们不是指同样的东西吗? - user1899415
@user1899415,不是同一件事。数字的元素(字符)是数字的一个组成部分。 - falsetru
啊,我明白了。抱歉让你感到困惑,问题已经编辑过了。 - user1899415
3个回答

10
您可以使用 sort
sort -n -t, -k4 INPUT

2
假设输入有4列。 - falsetru

3

如果您的输入文件每行列数不同,则可以将最后一列作为第一列,按其排序,然后删除它。

awk '{print($NF,$0)}' FS=, OFS=, inputFile | sort -t, -nk1 | cut -f2- -d,

这是适合我的答案,因为我没有固定数量的字段。 - Paul Tomblin

2

使用rev反转每一行,然后排序,再次反转:

rev < $file | sort | rev

唉...楼主的例子与问题不符。我回答了问题,而不是例子。显然目标是按行中的最后一个数字而不是最后一个数字进行排序。很难给人们想要的东西而不是他们要求的东西。 - Adam Liss
这段代码无法产生 OP 所期望的输出,因为最后一个数字被颠倒并进行了比较。OP 写了“digit”,但实际上他想要的是数字。 - falsetru
1
好的。请阅读我的评论,就在你的上面。 - Adam Liss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接