我在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
答案 0 :(得分:2)
尝试使用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