10 awhdk;
14 hjoeow;
2 kdkld;
4 jkjdksl
Run Code Online (Sandbox Code Playgroud)
如何根据第一列(即计数)对其进行排序?
我想得到这个输出:
14 hjoeow;10 awhdk;4 jkjdksl;2 kdkld
我需要根据对第一列的排序来打印两列。
您可以使用-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实现中省略它。