linux bash' sort'按字典顺序

时间:2015-04-17 05:50:36

标签: linux bash file sorting unix

我正在尝试按升序对文件进行排序。该文件包含字母和数字值。

aae-miR-1
aae-miR-10
aae-miR-100
aae-miR-1000
aae-miR-11-3p
aae-miR-11-5p
aae-miR-1174
aae-miR-1175-3p
aae-miR-1175-5p
aae-miR-12-3p
aae-miR-124

我希望输出为

aae-miR-1
aae-miR-10
aae-miR-11-3p
aae-miR-11-5p
aae-miR-12-3p
aae-miR-100
aae-miR-124
aae-miR-1000
aae-miR-1174
aae-miR-1175-3p
aae-miR-1175-5p`

我用过,

sort -k1,1 -n <file> 

对于排序,使用数字和字母顺序,但它没有按预期进行。请建议使用sort

3 个答案:

答案 0 :(得分:1)

对于这种情况,您应该使用sort -t"-" -k3n file.txt

收到的输出: -

aae-miR-1
aae-miR-10
aae-miR-11-3p
aae-miR-11-5p
aae-miR-12-3p
aae-miR-100
aae-miR-124
aae-miR-1000
aae-miR-1174
aae-miR-1175-3p
aae-miR-1175-5p
  

这更明确。 '-t' 选项用于提供   带分隔符的文件的分隔符。 &#39; -k&#39;用于指定   必须在其上进行分类的键。格式   &#39; -k&#39;是: -km[,n] 其中m是起始键,n是结束键。 n是可选键,仅在需要时使用。

答案 1 :(得分:1)

尝试:

sort -n -t- -k3 <file>
  • -n将按数字排序。
  • -t-将使用-作为字段分隔符。
  • -k3将使用第三个字段进行排序。

答案 2 :(得分:1)

尝试使用分隔符:

sort -t - -k3n file