在linux中将多个文件连接成一行

时间:2016-11-14 11:55:43

标签: awk concatenation fasta

我有3个fasta文件,如下面的

>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”请指导我。

3 个答案:

答案 0 :(得分: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 :(得分: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...命令只会附加到此文件。

答案 2 :(得分:1)

这个怎么样?

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