基于列排序

aru*_*run 3 sort

10 awhdk;
14 hjoeow;
2  kdkld;
4  jkjdksl
Run Code Online (Sandbox Code Playgroud)

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

我想得到这个输出:

14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld

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

Sté*_*las 5

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

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

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

sort -rn file
Run Code Online (Sandbox Code Playgroud)

它将整行视为一个数字。14 hjoeow;例如,线将被理解为14数字。

你可以这样做:

sort -bk 1,1rn file
Run Code Online (Sandbox Code Playgroud)

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

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

sort -rn file | paste -sd '\0' -
Run Code Online (Sandbox Code Playgroud)

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