按特定内容对文件进行排序

时间:2021-05-27 21:12:28

标签: linux shell

我需要对157个gff3格式的注释文件进行排序

其中一个来自转录组,另一个来自基因组 我的目的是将它们分为这两类

我想按主要差异字符排序:转录组文件包含“三位一体”,基因组文件包含“脚手架”作为关键字,如下所示:

##gff-版本 3 ##功能本体http://song.cvs.sourceforge.net/viewvc/song/ontology/sofa.obo?revision=1.269 ##interproscan-version 5.51-85.0 ##sequence-region scaffold1530size114558 1 630 脚手架1530size114558。多肽 1 630 。 + 。 ID=scaffold1530size114558;md5=6a2e960f92b2ccbad5284858e0e5aa60

和:

##gff-版本 3 ##功能本体http://song.cvs.sourceforge.net/viewvc/song/ontology/sofa.obo?revision=1.269 ##interproscan-version 5.51-85.0 ##sequence-region TRINITY_DN67221_c1_g2_i2 1 542 TRINITY_DN67221_c1_g2_i2 。多肽 1 542。 + 。 ID=TRINITY_DN67221_c1_g2_i2;md5=e2ea1828cc04caa25aa6233aec734f88

这就是为什么我在使用“head”命令时得到的原因

但我不知道如何对这些文件进行排序 感谢您的帮助

1 个答案:

答案 0 :(得分:0)

好的,你还没有回来澄清,所以我会大胆猜测,并根据假设来制定我的解决方案

  1. 这些文件有一个可识别的模式,在我的例子中,它们都以 file 开头
  2. 所有文件都在一个目录中
  3. 您希望分类文件最终位于两个单独的子目录中

实际工作由这两行完成:

grep -l TRINITY file* | xargs -n 1 -I{}   mv {} transcriptomes/
grep -l scaffold file* | xargs -n 1 -I{}   mv {} genomes/

这是一个成绩单,展示了如何实现我认为你想要的:

$ ls
file1   file11  file13  file15  file17  file19  file20  file4  file6  file8
file10  file12  file14  file16  file18  file2   file3   file5  file7  file9
$ mkdir {transcriptomes,genomes}
$ grep -l TRINITY file*
file11
file12
file13
file14
file15
file16
file17
file18
file19
file20
$ grep -l scaffold file*
file1
file10
file2
file3
file4
file5
file6
file7
file8
file9
$ grep -l TRINITY file* | xargs -n 1 -I{}   mv {} transcriptomes/
$ grep -l scaffold file* | xargs -n 1 -I{}   mv {} genomes/
$ ls
genomes  transcriptomes
$ find
.
./genomes
./genomes/file1
./genomes/file10
./genomes/file3
./genomes/file2
./genomes/file4
./genomes/file6
./genomes/file7
./genomes/file5
./genomes/file8
./genomes/file9
./transcriptomes
./transcriptomes/file16
./transcriptomes/file12
./transcriptomes/file17
./transcriptomes/file13
./transcriptomes/file18
./transcriptomes/file11
./transcriptomes/file19
./transcriptomes/file15
./transcriptomes/file20
./transcriptomes/file14
相关问题