Bash:按前4列排序csv文件

Ric*_*son 13 csv sorting bash shell

我有一个csv文件,其字段由";"分隔.有8个字段,我想按前4列按顺序对数据进行排序(按列1排序,然后按第2列排序等)

我如何从linux中的命令行执行此操作?

我尝试使用开放式办公室,但它只允许我选择3列.

编辑:在我要对数据进行排序的字段中,三个字段包含带有数值的字符串,一个只包含字符串.如何使用sort命令指定?

Vij*_*jay 20

尝试:

sort -t\; -k 1,1n -k 2,2n -k 3,3n -k 4,4n test.txt
Run Code Online (Sandbox Code Playgroud)

例如:

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
Run Code Online (Sandbox Code Playgroud)


Bri*_*new 8

sort -k将允许您定义排序键.来自man sort:

-k, --key=POS1[,POS2]
       start a key at POS1 (origin 1), end it at POS2 (default end of line). 
Run Code Online (Sandbox Code Playgroud)

所以

$ sort -t\; -k1,4
Run Code Online (Sandbox Code Playgroud)

应该这样做.请注意,我已经转义了分号,否则shell会将其解释为语句结束.