分别对文件中的每个列(字段)进行排序

分别对文件中的每个列(字段)进行排序

我知道可以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

如果我这样做,我首先将行分成字段,每个字段进入它自己的文件;可以使用cutawk或各种其他工具来实现这一点。然后将sort每个文件分开。然后paste他们又回到了一起。

相关内容