Bash:用染色体排序文件名

时间:2017-01-24 14:42:59

标签: bash sorting

我有一个文件夹,看起来都像这样

ASX.chr.txt

其中chr可以是1-19,X,Y或MT的数字。

有没有办法对这些文件进行排序,我得到以下顺序?

ASX.1.txt
ASX.2.txt
ASX.3.txt
...
ASX.9.txt
ASX.10.txt
ASX.11.txt
...
ASX.19.txt
ASX.X.txt
ASX.Y.txt
ASX.MT.txt

1 个答案:

答案 0 :(得分:0)

我喜欢@ pii_ke的perl oneliner。但是,如果你没有perl,你可以尝试这个 -

ls | sed 's/\.M/.30M/;s/\.\([XY]\)/.20\1/'|sort -t. -k2 -n|sed 's/\.[23]0/./'

(在bash中)

  • 第一次sed更改X->20XY->20YMT->30MT
  • sort按照数字顺序(.)对第一个-t. -k2之后和第二个-n之前的部分进行排序。因此,XY来自19,因为20MT来自30
  • 第二个sed撤消了第一个效果。