将一行和cat多个文件匹配到一个文件中

时间:2017-02-14 13:17:17

标签: awk sed grep cat

我有一个包含3列和4426行的文件,有些像这样

file1:

DAEQUEG00000025 FP3SLUG00002140 FOMPING00001058 
DAEQUEG00001923 FP3SLUG00002391 FOMPING00000186 
DAEQUEG00000047 FP3SLUG00002116 FOMPING00001081 
DAEQUEG00000321 FP3SLUG00006281 FOMPING00000374

我有相同数量的文件并以相同的方式命名(DAEQUEG00000025.fa FP3SLUG00002140.fa FOMPING00001058.fa

我想将第一行与文件列表匹配,并将cat匹配到一个文件中。

预期输出(一个文件中的第一行)

>DAEQUEG00000025  
ATGTTGTTTAGATTGGCCCGGCGAGCTACAAGCCCGCTCACCCGCTCGATGGCGACGCAT
GCGCGAGGACTCCCTGCTCTACTCGAGAAGAAACCAGACGATGTAGTCATAACATTCGCA
>FP3SLUG00002140
AAGCGTACTGCTATGGCACGCGCGAGGAAGGGTCAGCTAAAGGACATCCCTGTCGACGAG
>FOMPING00001058 
CTTATGCAGGCTCTCATCAAGACTCAGCTCGATCCAGCTATGCTAGAGGACATATGCGTA
GGGACTTGTCACCCTCCGTCACCGACGTACATCTCTCGAGCAGCTGCTCTTGCTGCTGGA

1 个答案:

答案 0 :(得分:0)

你可以尝试,

while read -r a b c; do 
    cat "$a.fa" "$b.fa" "$c.fa" > "${a}_${b}_${c}.fa"; 
done < file1

您将获得具有复合名称作为输出的多个文件,例如

  

DAEQUEG00000025_FP3SLUG00002140_FOMPING00001058.fa

>DAEQUEG00000025  
ATGTTGTTTAGATTGGCCCGGCGAGCTACAAGCCCGCTCACCCGCTCGATGGCGACGCAT
GCGCGAGGACTCCCTGCTCTACTCGAGAAGAAACCAGACGATGTAGTCATAACATTCGCA
>FP3SLUG00002140
AAGCGTACTGCTATGGCACGCGCGAGGAAGGGTCAGCTAAAGGACATCCCTGTCGACGAG
>FOMPING00001058 
CTTATGCAGGCTCTCATCAAGACTCAGCTCGATCCAGCTATGCTAGAGGACATATGCGTA
GGGACTTGTCACCCTCCGTCACCGACGTACATCTCTCGAGCAGCTGCTCTTGCTGCTGGA