在 linux 中将多个文件连接成一行
Concatenating multiple files into a single line in linux
我有 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" 可以吗 请指导我。
您只需使用
即可完成此操作
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...
命令只是附加到这个文件。
你的意思是你的三个文件有内容
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
这也删除了我在逐字复制时得到的输入行末尾的一些额外空格。
这个呢?
awk 'BEGIN { RS=""} {for (i=1;i<=NF;i++) { printf "%s",$i } }' f1_head f1_body f1_tail
我有 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" 可以吗 请指导我。
您只需使用
即可完成此操作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...
命令只是附加到这个文件。
你的意思是你的三个文件有内容
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
这也删除了我在逐字复制时得到的输入行末尾的一些额外空格。
这个呢?
awk 'BEGIN { RS=""} {for (i=1;i<=NF;i++) { printf "%s",$i } }' f1_head f1_body f1_tail