我知道可以sort
主要通过一个字段,然后通过另一个字段。例如:
$ echo -e "1 5\n1 4\n8 2\n1 9" | sort -k 1,1n -k 2,2n
1 4
1 5
1 9
8 2
$
但是,我是否正确,总是sort
保持行完整,例如不可能以输出如下的方式进行排序:
1 2
1 4
1 5
8 9
如果这不可能用 实现sort
,那么正确的工具是什么?
答案1
作为汤姆·齐奇著名的
paste -d ' ' <(echo -e "1 5\n1 4\n8 2\n1 9" |
cut -f1 -d' ' |
sort -n
) <(echo -e "1 5\n1 4\n8 2\n1 9" |
cut -f2 -d' ' |
sort -n
)
答案2
如果我这样做,我首先将行分成字段,每个字段进入它自己的文件;可以使用cut
或awk
或各种其他工具来实现这一点。然后将sort
每个文件分开。然后paste
他们又回到了一起。