1

У меня есть текстовый файл с разделителями из нескольких столбцов, некоторые из которых являются текстовыми, а некоторые - числовыми. Я хотел бы отсортировать по нескольким полям, которые охватывают как текстовые, так и числовые поля. В то время как -n позволяет обрабатывать вещи как числа, он делает странные вещи с текстом, и опускание этого приводит к тому, что числа обрабатываются как текст. Есть ли способ, которым я могу связать область с лечением?

ПРИМЕР:

Входной файл:

Doggy,20
Cat,20
Cat,5
Bird,100
Bat,5

Желаемая сортировка на основе первого поля, затем второго:

Bat,5
Bird,100
Cat,5
Cat,20
Doggy,20

Результат sort input.txt -t, -k1,1 -k2,2:

Bat,5
Bird,100
Cat,20
Cat,5
Doggy,20

примечание: кот, 20 предшествует коту, 5

Результат sort input.txt -t, -n -k1,1 -k2,2:

Bat,5
Cat,5
Cat,20
Doggy,20
Bird,100

Примечание: птица, 100 последний

1 ответ1

4

Прикрепите n для числовой обработки только к тем полям, которые вы хотите отсортировать как таковые. В данных вашего примера поле 1 является текстовым, а поле 2 числовым, поэтому добавьте n только к определению поля 2:

sort input.txt -t, -k1,1 -k2,2n

или же

sort input.txt --field-separator=, --key=1,1 --key=2,2n

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .