根据列排序

根据列排序
10 awhdk;
14 hjoeow;
2  kdkld;
4  jkjdksl

如何根据第一列(即计数)对其进行排序?

我想得到这个输出:

14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld

我需要根据第一列的排序来打印两列。

答案1

您可以用来-k指定排序键在输入行中的开始和结束位置。

您可以使用该-n选项或添加n到排序键规范来触发数字排序,而不是默认的词法排序。并-r反转排序。

在这里,对于数字排序,您不需要将排序键限制为排序命令。如果你这样做:

sort -rn file

它会将整行视为数字。14 hjoeow;例如,该行将被理解为14数字。

你可以这样做:

sort -bk 1,1rn file

仅对第一个字段进行排序,但这没有什么区别。

连接线的命令paste带有-s选项。您可以使用 指定分隔符-d\0 是分隔符的特殊值,表示不加任何中间条件地加入。因此,要获得预期的输出:

sort -rn file | paste -sd '\0' -

POSIXpaste要求传递文件名。-又是一个特殊值,意味着标准输入。您可以在某些paste实现中省略它。

相关内容