2つのファイルのN個の同じ連続文字をシーケンスと比較する

2つのファイルのN個の同じ連続文字をシーケンスと比較する

2つのファイルがあり、各ファイルには次のヘッダーを含む3つのシーケンス(それぞれ200の長さ)があります。

#File1

>1  
TGATTGCATAACCACTTAACATCTTGTTTTATCTAAATAAAATTAAGCATGTTATCTTTTTGGGGCACTCCTGGGGCAGTAGATGCCAGTTGTTGATTCAGTATATCTACTTGTGACTGGTTATTATCCCGATTTTTTTAGTTTTAAGGTGTTGACATAGCCATCCATGCTCCATATACTGTATAGACCATCTGAGCGTT  
>2  
TGGGAAAACAGCATTCAGCGGTGGCTTATTCCTGCTAAGGATGTTGGCCGCATTCATGCTGAGCACAACCTCGACGGCCTGCTGAGGGGCGATTCGGCATCCCGCGCTGCCTTTATGAAGGCAATGGGAGAGGCAGGGCTACGCACCATCAACGAGATGCGACGAACGGACAACCTCCCGCCATTGCCGGGTGGCGATGT  
>3  
GAAATGGGAACCGCGAACATGCCTGCACATCCGTTTGTGCGACCCGCTTACGATACTCGCGAGGAAGAGGCCGCCAGCGTCGCCATTGCCAGGATGAATCAGGCTATTGATGAGGTATTGAGCAAGTGAATGAAGATAATATCTACGCCTTGCTTTCTCCCCTGGCAGAAGGACGGGTATATCCCTATGTTGCGCCATTA
#File2

>1  
TGATTGCATAACCACTTAACATCTTGTTTTATCTAAATAAAATTAAGCATGTTATCTTTTTGGGGCACTCCTGGGGCAGTAGATGCCAGTTGTTGATTCAGTATATCTACTTGTGACTGGTTATTATCCCGATTTTTTTAGTTTTAAGGTGTTGACATAGCCATCCATGCGGGAAGGTGCAGCATAATGTGCTTTGGATT  
>2  
TGAGTGCCCCATTTGTGAAGCAATAAAGTTCGGGTTCGCGCCAGCGGCAAGCGCCCAGCATGCACCGATTTTTTTAGTTTTAAGGTGTTGACATTAGGTATGTCGGGACTGGTATGCTTTCCTGTGTCGCAGCCCGGCGCGTCTCAATGCAGATTCCCATATCCTGTTCATCCATATACTGTATAGACCATCTGAGCGTT  
>3  
TACCTGAGCGATCGGTAATTTGCGGATTGAAGACAAAGGTGCAGGAATGAGTTTTTGTACGACCGTATTCGCGCAGCTTTACTTCAATTTTGTGCTGTTTGCTCAGCTTCGTGAAAGAGGCCTGACTTTTTAAAGCATCAATTGCTGGCTGCACAAGATGTATCACCCTGTCGGTTCCTGCCTGGGTTTTCGGCAGGGTG  

file1のすべてのシーケンスをfile2と(ヘッダーに関係なく)比較したい(File1:1,2,3対File2:1,2,3)。正確に30の連続した文字が同じです。これら2つのシーケンスで、一致するシーケンスのタイトル(一致するシーケンスのみ)を出力ファイルに保存したいと思います。

たとえば、30文字の文字列は次のようになります。

TGATTGCATAACCACTTAACATCTTGTTTTファイル1のseq1とファイル2のseq1に存在します。
TCCATATACTGTATAGACCATCTGAGCGTTファイル1のseq1とファイル2のseq2に存在します。

そのため、次のような出力ファイルが生成されます。

[1,1]  
[1,2]  
...

答え1

$ cat tst.awk
BEGIN { wid = 30 }
sub(/^>/,"") { hdr=$1; next }
NR == FNR { a[hdr]=$0; next }
{
    for ( hdrA in a ) {
        strA  = a[hdrA]
        lgthA = length(strA)
        for ( idxA=1; idxA<=(lgthA - wid + 1); idxA++ ) {
            substrA = substr(strA,idxA,wid)
            if ( index($0, substrA) ) {
                printf "[%s,%s]\n", hdrA, hdr
                break
            }
        }
    }
}

$ awk -f tst.awk file1 file2
[1,1]
[1,2]

関連情報