Команда сортировки в linux не работает "правильно" - PullRequest
3 голосов
/ 10 июня 2019

Я работаю в Linux, команда sort возвращает не так, как ожидалось.

Входной текст:

$ cat input.txt
rep1_1.fq
rep1_2.fq
rep12_1.fq
rep12_2.fq

Команда и вывод:

$ sort input.txt
rep1_1.fq
rep12_1.fq
rep12_2.fq
rep1_2.fq


$ sort --version
sort (GNU coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and Paul Eggert.

После сортировки я ожидал, что rep1_2.fq будет после rep1_1.fq, но результат будет другим.

Решено

согласно совету @Federico klez Culloca, используйтеLC_ALL=C

$ LC_ALL=C sort input.txt
rep12_1.fq
rep12_2.fq
rep1_1.fq
rep1_2.fq

Отредактировано

используйте LC_ALL=C и исправьте сортировку файлов в каталоге.

в случае, если втекущий каталог:

$ LC_ALL= ls
rep1_1.fq  rep12_1.fq  rep12_2.fq  rep1_2.fq

$ LC_ALL=C ls
rep12_1.fq  rep12_2.fq  rep1_1.fq  rep1_2.fq

1 Ответ

2 голосов
/ 10 июня 2019

Попробуйте с version-sort.Из руководства:

       -V, --version-sort
          natural sort of (version) numbers within text

Это вывод с использованием вашего примера:

$ sort -V input.txt 
rep1_1.fq
rep1_2.fq
rep12_1.fq
rep12_2.fq
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...