Подтвердить что ты не робот

Bash: сортировать файл csv с помощью первых 4 столбцов

У меня есть файл csv с полями, разделенными символом ";". Есть 8 полей, и я хочу сортировать свои данные по первым 4 столбцам в порядке возрастания (сначала сортировать по столбцу 1, затем по столбцу 2 и т.д.)

Как я могу это сделать из командной строки в Linux?

Я пробовал с открытым офисом, но он только позволяет мне выбрать 3 столбца.

EDIT: среди полей, по которым я хочу сортировать свои данные, три поля содержат строки с числовыми значениями, одну строку. Как я могу указать это с помощью команды sort?

4b9b3361

Ответ 1

Try:

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

Ответ 2

sort -k позволит вам определить ключ сортировки. От man sort:

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

So

$ sort -t\; -k1,4

должен это сделать. Обратите внимание, что я избежал полуколонии, иначе оболочка будет интерпретировать ее как конец оператора.