linux中的sort命令无法“正确”运行

我在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

解决方法:

尝试使用版本排序.从手册中:

       -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
上一篇:VS打包软件部署------ClickOnce应用安装 (各版本.net引导文件安装,再发布文档离线安装下载地址)


下一篇:php-即将订购的日期