複数のファイルの行を1つのファイルにコピーし、その行の名前を元のファイル名として指定する方法

複数のファイルの行を1つのファイルにコピーし、その行の名前を元のファイル名として指定する方法

私の問題は、fata形式のファイルが200個あることです。たとえば、

 /User/Bin/bin.0.fa
 /User/Bin/bin.1.fa
 ...
 /User/Bin/bin.200.fa

各.faファイルには、ヌクレオチド文字で区切られた連続した名前IDが含まれています。

In /User/Bin/bin.0.fa

>c_000000000001
CGACATTTTCCAACTTATTTTTTCCTGTAGTAAAAATTATTTACATACAAAAAAGGAGCTGTTCACTAATTATTTAGTGC
>c_000000000002 
TACAACTCCTTTTTACTATTCTTCTGAATTTGATTTTTCATCCATTTGTTTTTGAGCTTCTTGAACTAATTTATCAAGACTATTATCTTCTACAACTTCATTTTCTTGTCTATCTAATTCATCTGTTAATGTTAATTGCTGATCTTTATCTTCTACATCT CTACCTGAAATTTTAGCTATAGCTACAATCTTTTCTTCATCAGAAGTTCTCATTAATCTAACTCCCATTGTAGCTCTAC
>c_000000000003  
AGTTACAGATACATCTGATACATTAATTCTTATAGCAACACCACTTGTATTTATAAGCATTAATTCATCTTCAGATTTACATACTGTTGCACCAACAACTTTACCAGTCTTTTCACTGATTTTGTATGTTATTAAACCAACTCCACCTCTATTTTGTCTC
...

In /User/Bin/bin.1.fa

>c_000000000004
GGATCATCGCTTGTACATCCCAAACCAAAAAAGAATACTGCACTTACAATCAGTTGGATTTGAAACGCGATTTTCATTTTTGGTATATGTTTAAGATTAGCACTTTGTTTCATTGCTTTTGGCTATGAACGATGTTTACGGGGGTGTA
>c_000000000005 
GAAAGAAGCGTATTGGTCGGTATAAATACCGCTCAACTAAACGAGCACAAAGCTACCGAAAATTTGGATGAATTGGCTTTTCTGGCCCAAACGGCTGGAGC
>c_000000000006
CGGCACTTATTTGCCCCAGCCCATTTTGGGGGTAGAAATACCCAAGAGCAAGGGAAAGGTTCGCCTTCTGGGTGTGCCTACCGTGGTTGACCGTATGTTGCAAC
... 

...
In /User/Bin/bin.200.fa

>c_000000020120   
CTCTGCAACTGGATCCCGAAAAGATCCGCAAAGAAAGCGAACCCAAAGAAAAAGTCGATCTGGAGAGCACCGTCGCCCGCAGTCTGGCCACCCT
>c_000000020121
CATCAATCATCTCAAATACTACCGCAACGCAGATTATTCCCAGTGCAATAACAAAACCGACTCCCGCCTCTTTTGTCTGGCCGTA
>c_000000050122 
GGTACGCCTCCGGCAGAACAAGGCGGCAACGAACCTCAGAACGAGGGAAAGCTAACCCAGGCCGGGTACGCCTCCGGCAGAACAAGGCGGCAACGAACCTCAGAACGAGGGAAAGCTAACCCAGGCCG
...  

特定の.faファイルの各contig名ID(">"を除く)を単一のタブで区切られたtxtファイルにコピーしたいと思います。ここで、contig name ID の名前はソースファイル n+1 で指定されます。このように:

In /User/Bin/Summary.txt

c_000000000001 Bin_1
c_000000000002 Bin_1
c_000000000003 Bin_1
...
c_000000000004 Bin_2
c_000000000005 Bin_2
c_000000000006 Bin_2
...
...
c_000000020120 Bin_201
c_000000020121 Bin_201
c_000000020122 Bin_201

ベストアンサー1

公開された入力/出力の例と許可された答えを考慮すると、実際に必要なのはARGINDにGNU awkを使用することだけです。

awk -F'>' -v OFS='\t' 'NF>1{print $2, "Bin_"ARGIND}' /Usr/Bin/bin*.fa > /User/Bin/Summary.txt

または awk を使用してください。

awk -F'>' -v OFS='\t' 'FNR==1{++c} NF>1{print $2, "Bin_"c}' /Usr/Bin/bin*.fa > /User/Bin/Summary.txt

おすすめ記事