Awk 如何比较头文件(fasta)的一部分并将其放在一起?

Awk 如何比较头文件(fasta)的一部分并将其放在一起?,awk,header,compare,fasta,Awk,Header,Compare,Fasta,我在一个目录中有更多的fasta文件,它们的开头相同,但结尾不同: file1abgff ----------- file2adferr ------------ file3adfr ---------- file1adcef ----------- 如何将目录中所有文件的开头相互比较,并将匹配项组合到一个新文件中(example>file1abgfadcef)?此代码似乎可以解决您的问题 假设您有输入文件: cat input >file1abgff >file2adfer

我在一个目录中有更多的
fasta
文件,它们的开头相同,但结尾不同:

file1abgff
-----------

file2adferr
------------

file3adfr
----------

file1adcef
-----------

如何将目录中所有文件的开头相互比较,并将匹配项组合到一个新文件中(
example>file1abgfadcef
)?

此代码似乎可以解决您的问题

假设您有输入文件:

cat input
>file1abgff
>file2adferr
>file3adfr
>file1adcef
以下是我的解决方案:

 sed 's/[0-9]/& /' input | awk  '{a[$1]=($1 in a ? a[$1]"|"$2 : $0)}END{for (i in a){print a[i]}}' | sed 's/ //' | grep  "|" | sed 's/|//'

>file1abgffadcef

需要向OP提供更多信息,以便人们能够帮助您。提供几个带有有效标题的示例文件,以及您希望如何获得输出。您提供的示例没有帮助!当你使用awk时,你永远不需要sed,当你使用任何一个(谷歌UOOC)时,你永远不需要cat。嗨,宝贝和@EdMorton,我改进了我的解决方案。嗨,银杏,谢谢你的回答!但这不起作用。有了这段代码,我就有了输出:>file3adfradfr也许任何人都有办法帮助我,我试着用另一种方式:#/对于i in*,bin/bash TESTCHARS=6;为j英寸*;如果[[
head-c$TESTCHARS“$i”
=
head-c$TESTCHARS“$j”
],则执行此操作;然后cat i j>/combinedfile.fasta#此部分在退出0时不起作用