我有一个 csv 文件,其中的字段由“;”分隔。有 8 个字段,我想按前 4 列按升序对数据进行排序(首先按第 1 列排序,然后按第 2 列等)
我如何从 linux 的命令行执行此操作?
我尝试使用开放式办公室,但它只能让我选择 3 列。
编辑:在我想要对数据进行排序的字段中,三个字段包含带有数值的字符串,一个只有字符串。如何使用sort
命令指定它?
尝试:
sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt
例如:
1;2;100;4
1;2;3;4
10;1;2;3
9;1;2;3
> sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n temp3
1;2;3;4
1;2;100;4
9;1;2;3
10;1;2;3
sort -k
将允许您定义排序键。来自man sort
:
-k, --key=POS1[,POS2]
start a key at POS1 (origin 1), end it at POS2 (default end of line).
所以
$ sort -t\; -k1,4
应该这样做。请注意,我已经转义了分号,否则 shell 会将其解释为语句结束。