2016-11-14 77 views
0

我有3个FASTA文件,如以下串联多个文件合并成一个单一的线在linux

>file_1_head 
haszhaskjkjkjkfaiezqbsga  
>file_1_body 
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja  
>file_1_tail 
mnnbasnbdnztoaosdhgas 

我想将它们连接成一个像下面

>file_1 
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas 

我试着用cat命令cat file_1_head.fasta file_1_body.fasta file_1_tail.fasta但它并没有像上面那样连接成一行。 “awk”可能吗?请引导我。

+1

这是一件小事。你有什么试图自己解决它? – hek2mgl

+0

@ hek2mgl我试过的东西我在我的问题中提到过。我尝试了“猫”命令,但它只是把所有的行放在一个新的行。请检查一下 – Chudar

+0

是的,我读到了。但是我想念你试图解决问题的东西 – hek2mgl

回答

3

你的意思是你的三个文件的内容

file_1_head.fasta

>file_1_head 
haszhaskjkjkjkfaiezqbsga  

file_1_body.fasta

>file_1_body 
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja  

file_1_tail.fasta

>file_1_tail 
mnnbasnbdnztoaosdhgas 

包括他们每个人的名字作为第一行吗?

那么你可以做

(echo ">file_1"; tail -qn -1 file_1_{head,body,tail}.fasta | tr -d "\n\t ") > file_1.fasta 

得到file_1.fasta作为

>file_1 
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas 

这也是在你输入的是我得到了线路末端消除一些额外的空格,当我逐字拷贝他们。

1

为此,您可以简单地用

cat file1 file2 file3 | tr -d '\n' > new_file 

tr删除换行符。

编辑:

针对您的特殊第一行只是做

echo file_1 > new_file 
cat file1 file2 file3 | tr -d '\n' >> new_file 

第一个命令创建与上一行file_1文件。然后cat...命令只是追加到这个文件。

+0

谢谢。但是你的命令给我输出如下> file_1haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas。我想要输出像上面提到的 – Chudar

+0

编辑我的答案。 – fancyPants

+0

我试过了,但它没有奏效。 – Chudar

1

这是怎么回事?

awk 'BEGIN { RS=""} {for (i=1;i<=NF;i++) { printf "%s",$i } }' f1_head f1_body f1_tail 
相关问题