Может кто-нибудь объяснить, почему вывод сортировки UNIX отличается, когда разделитель является запятой ',' и pipe '|'Unix sort issue
Я знаю, что я применяю числовую сортировку по алфавитно-цифровому столбцу, но я думаю, что выход не должен отличаться, если разделитель является запятой или трубой.
Файл с запятой разделителем:
$cat file.txt 1,1400002827,002,DC19183529 2,1400002827,002,DC19183500 3,1400004243,001,DC17458621 4,1400008953,004,1459345892 5,1600009991,001,DC17458621 6,1600009991,001,DC17458621 7,1600009991,001,DC17458659 8,1600009991,003,DC17458789 $sort -t, -nuk2,4 file.txt 1,1400002827,002,DC19183529 3,1400004243,001,DC17458621 5,1600009991,001,DC17458621 8,1600009991,003,DC17458789 4,1400008953,004,1459345892
Модифицированный же файл, чтобы иметь разделитель в виде трубы '|'
$cat file.txt 1|1400002827|002|DC19183529 2|1400002827|002|DC19183500 3|1400004243|001|DC17458621 4|1400008953|004|1459345892 5|1600009991|001|DC17458621 6|1600009991|001|DC17458621 7|1600009991|001|DC17458659 8|1600009991|003|DC17458789 $sort -t'|' -nuk2,4 file.txt 1|1400002827|002|DC19183529 3|1400004243|001|DC17458621 4|1400008953|004|1459345892 5|1600009991|001|DC17458621
Мне не нужно альтернативное решение.
Мне нужно понять, почему sort
дает разные выходные данные с запятой и трубой.
Тестирование другими символами заставляет меня думать, что есть что-то о числовых разделителях, потому что я получаю тот же результат с '.' dot, как с ',', но если я ставлю, например, ';' это то же самое, что и с трубами. Также обратите внимание, что параметр '-k' принимает только 2, если вы удаляете', 4', вы все равно получите тот же результат. – cnluzon
Просто для объяснения моего комментария раньше, потому что я ошибался: '-k2,4' сортируется из столбца' 2' в '4', что в этом случае совпадает с' -k2', который находится в столбце ' 2' до конца. – cnluzon