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

Awk 在linux中将多个文件连接到一行,awk,concatenation,fasta,Awk,Concatenation,Fasta,我有3个fasta文件,如下所示 >file_1_head haszhaskjkjkjkfaiezqbsga >file_1_body loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja >file_1_tail mnnbasnbdnztoaosdhgas >file_1 haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgz

我有3个fasta文件,如下所示

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
>file_1
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas
我想把它们连接成一个单一的如下

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
>file_1
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas

我试过使用cat命令
cat file\u 1\u head.fasta file\u 1\u body.fasta file\u 1\u tail.fasta
,但它没有像上面那样连接成一行。有了“awk”可以吗?请指导我。

您只需使用

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\u 1
。然后,
cat…
命令只是附加到此文件。

您只需使用

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\u 1
。然后,
cat…
命令只是附加到此文件。

您的意思是您的三个文件都有内容吗

文件\u 1\u head.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
文件1\u body.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
文件\u 1\u tail.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
是否将其中每一个的名称作为第一行

那你就可以做了

(echo ">file_1"; tail -qn -1 file_1_{head,body,tail}.fasta | tr -d "\n\t ") > file_1.fasta
获取文件\u 1.fasta的步骤

>file_1
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas

这也会删除我在逐字复制输入时得到的输入行末尾的一些额外空格。

你是说你的三个文件都有内容吗

文件\u 1\u head.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
文件1\u body.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
文件\u 1\u tail.fasta

>file_1_head
haszhaskjkjkjkfaiezqbsga    
>file_1_body
loizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdja    
>file_1_tail
mnnbasnbdnztoaosdhgas
是否将其中每一个的名称作为第一行

那你就可以做了

(echo ">file_1"; tail -qn -1 file_1_{head,body,tail}.fasta | tr -d "\n\t ") > file_1.fasta
获取文件\u 1.fasta的步骤

>file_1
haszhaskjkjkjkfaiezqbsgaloizztzezzqieovbahsgzqwqoiropoqiwoioioiweoitwwerweuiruwieurhcabccjashdjamnnbasnbdnztoaosdhgas
这还删除了我在逐字复制输入行时得到的输入行末尾的一些额外空格。

这是怎么回事

awk 'BEGIN { RS=""} {for (i=1;i<=NF;i++) { printf "%s",$i } }' f1_head f1_body f1_tail
awk'BEGIN{RS=”“}{for(i=1;i这个怎么样

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

awk'BEGIN{RS=”“}{for(i=1;iThanks.但是您的命令给我的输出如下>file1haszhaskjkjkjkfaiezqbsgaloizzzzqieovbahsgzqwqoiropoqiwoioiiwieoitwwereuriruwieurhcabcjashdjamnnbdnztoosdhgas.我想要上面提到的输出编辑我的答案。它给我的输出如下:file_1>文件头haszhaskjkjkkjkfaiezqbsga>文件体loizzezqieovbahsgzqwqoiropoqiwoioiwieoitwwereuviruwieurhcabccjashdja>文件尾箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱想要以
>
开头的行还是什么?我需要详细信息。如果是这样,您可以使用
cat file1 file2 file3 | grep-v“^>跳过这些行| tr…
谢谢。但是您的命令给我的输出如下>file1haszhaskjkjkkfaiezqbsgaloizztzzqieovbahsgzqwqoiropoqiwoioioiwieoitwwerweiruwieurhcabcjashdjamnnbasdnztoosdhgas。我想要上面提到的输出编辑我的答案。它给我的输出如下:file|1>文件头haszhaskjkjkkjkfaiezqbsga>文件体loizzezqieovbahsgzqwqoiropoqiwoioiwieoitwwereuviruwieurhcabccjashdja>文件尾箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱箱你不想要以
>
或什么开头的行吗?我需要详细信息。如果是这样,你可以用
cat file1 file2 file3 | grep-v“^>”| tr…
跳过这些行。这是一项琐碎的任务。你自己尝试过解决它吗?@hek2mgl我尝试过的内容我在问题中提到过。我尝试过“cat”命令,但它只是把所有的行放在一个新的行中。请检查。是的,我读过。但我错过了一些你试图解决的问题。这是一个琐碎的任务。你自己尝试过解决它吗?@hek2mgl我尝试过什么我在我的问题中提到过。我尝试过“猫”命令,但它只是把所有的行放在一个新的行中。请检查。是的,我读过。但是我错过了一些你试图解决问题的东西