【问题标题】:linux bash 'sort' in dictionary orderlinux bash'排序'按字典顺序
【发布时间】:2015-06-23 20:10:42
【问题描述】:

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

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

【问题讨论】:

  • 尝试将破折号指定为字段分隔符,并使用数字排序。
  • 使用归档分隔符会将元素分成两部分。这只是我文件的一部分,如果我用“-”分隔所有文件,文件会变得很麻烦。

标签: linux bash file sorting unix


【解决方案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' 选项用于提供 带有分隔符的文件的分隔符。 '-k' 用于指定 必须在其基础上进行排序的键。的格式 '-k' 是:-km[,n] 其中 m 是开始键,n 是结束键。 n 是可选键,仅在需要时使用。

【讨论】:

  • 谢谢,它有效。 -k3n,3 在这里做什么?
  • @MANAUWERRAZA-'-k' is : '-km,n' 的格式,其中 m 是开始键/列,n 是结束键/列。
【解决方案2】:

试试:

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

【讨论】:

  • 谢谢,用字段分隔符分割,然后-k3进行第三次字段排序
【解决方案3】:

试试这个,带分隔符:

sort -t - -k3n file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-24
    • 2020-08-02
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多