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
实现中省略它。