Команда сортировки Linux: ключи с одинаковым стартом, но разная длина не сортируются в том же порядке

98
12

Я пытаюсь сортировать два файла, чтобы присоединиться к ним. Некоторые из ключей, которые я сортирую, очень похожи, и это, кажется, вызывает проблемы. Например, у меня есть два ключа: a1ke и a1k3-b3. Я использую команду:

sort -nk1 file.txt -o file.txt

В одном файле они отображаются в этом порядке, а в другом - в обратном порядке. Это вызывает проблемы при попытке присоединиться к файлам.

Как я могу сортировать эти файлы, чтобы они были в одном порядке?

благодаря

спросил(а) 2013-08-26T18:51:00+04:00 6 лет, 3 месяца назад
1
Решение
69

Не используйте параметр "-n", который сравнивается в соответствии с числовым значением строки.

-n
Compare according to arithmetic value an initial numeric string consisting of optional white
space, an optional - sign, and zero or more digits, optionally followed by a decimal point and
zero or more digits.

Вашими клавишами являются строки, а не цифры.

Вместо этого вы должны просто сделать:

sort -k1 file.txt -o file.txt

Дополнительная информация:

Вы можете видеть, что этот sort считает ваши ключи идентичными, когда -n используется, делая уникальный вид:

sort -un file

Вы увидите, что a1k3-b3 и a1ke считаются равными (и поэтому испускается только один). Если вы это сделаете:

sort -u file

Результат будет содержать как a1k3-b3 и a1ke, которые вы хотите.

ответил(а) 2013-08-26T19:10:00+04:00 6 лет, 3 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема