У меня возникают проблемы с командой sort Unix, когда вводятся поля с разделителями табуляции.

Если файл test.txt содержит:

Hello (2)
Hello (1)
Hello

применяя сортировку:

sort test.txt

производит вывод:

Hello
Hello (1)
Hello (2)

Однако, если файл test2.txt содержит разделенные табуляцией поля:

Hello (2)\tFred
Hello (1)\tFred
Hello\tFred

где \t - символ табуляции, применяющий сортировку:

sort -t $'\t' -k 1,2 test2.txt

результаты в другом порядке сортировки.

Hello (1)   Fred
Hello (2)   Fred
Hello   Fred

Есть ли способ использовать команду sort чтобы поля с разделителями табуляции были отсортированы следующим образом:

Hello   Fred
Hello (1)   Fred
Hello (2)   Fred

1 ответ1

2

sort использует вашу текущую локаль для сортировки. Я сам использую LANG=en_GB.UTF-8 и получаю ваш "нежелательный" результат. Используя локаль C , я получаю желаемый результат:

$ LANG=C sort -t $'\t' -k 1,2 test2.txt
Hello   Fred
Hello (1)       Fred
Hello (2)       Fred

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