1

次のような2つのファイルがあります。

FILE1

>comp0_c0_seq1 len=392 path=[1:0-391]
ATGAG...
>comp1_c0_seq1 len=399 path=[1:0-398]
AAGGA...
>comp1_c1_seq1 len=589 path=[1319:0-588]
TATAT...
>comp2_c0_seq2 len=340 path=[1:0-339]
GGAGT...
>comp2_c1_seq1 len=312 path=[924:0-311]
GGTTA...
>comp2_c1_seq2 len=312 path=[924:0-311]
TTATT...
>comp4_c0_seq1 len=800 path=[1:0-581 1284:582-799]
AGAGA...
>comp6_c0_seq1 len=245 path=[815:0-151 745:152-244]
GATTA...

そして2番目のファイル

FILE2

>contig_1
>contig_2
>contig_3
>contig_4
>contig_5
>contig_6
>contig_7
>contig_8

パターンが見つからないので、パーツをFILE1簡単に交換できました。シーケンスはなく、ヘッダーのみ>comp0_c0_seq1>contig_1FILE2

sedand を試してみましたがawk、成功しませんでした

私が取得したい出力は次のとおりです。

>contig_1 len=392 path=[1:0-391]
ATGAG...
>contig_2 len=399 path=[1:0-398]
AAGGA...
>contig_3 len=589 path=[1319:0-588]
TATAT...
>contig_4 len=340 path=[1:0-339]
GGAGT...
>contig_5 len=312 path=[924:0-311]
GGTTA...
>contig_6 len=312 path=[924:0-311]
TTATT...
>contig_7 len=800 path=[1:0-581 1284:582-799]
AGAGA...
>contig_8 len=245 path=[815:0-151 745:152-244]
GATTA...

私が扱っているファイルは 30,000 を超えるコンティグの長さで、その間に非常に大きなシーケンスが含まれています。

4

3 に答える 3

3

awk の使用:

awk '{ if(/comp/) { getline $1 < "input2"; } print }' input1
于 2013-05-23T02:10:46.640 に答える
1

awk頭痛の種なしで使用getlineし、両方のファイルを使用します。

$ awk 'NR==FNR{a[NR]=$0;next}/^>comp/{$1=a[++i]}1' file2 file1
>contig_1 len=392 path=[1:0-391]
ATGAG...
>contig_2 len=399 path=[1:0-398]
AAGGA...
>contig_3 len=589 path=[1319:0-588]
TATAT...
>contig_4 len=340 path=[1:0-339]
GGAGT...
>contig_5 len=312 path=[924:0-311]
GGTTA...
>contig_6 len=312 path=[924:0-311]
TTATT...
>contig_7 len=800 path=[1:0-581 1284:582-799]
AGAGA...
>contig_8 len=245 path=[815:0-151 745:152-244]
GATTA...

file1これは、とfile2が同じ数の と を持っていること>comp0_c0_seq1を前提としてい>contig_8ます。


増やしたいだけの場合>contig_は、まったく必要ありませんfile2

$ awk '/^>comp/{$1=">contig"++i}1' file1
>contig1 len=392 path=[1:0-391]
ATGAG...
>contig2 len=399 path=[1:0-398]
AAGGA...
>contig3 len=589 path=[1319:0-588]
TATAT...
>contig4 len=340 path=[1:0-339]
GGAGT...
>contig5 len=312 path=[924:0-311]
GGTTA...
>contig6 len=312 path=[924:0-311]
TTATT...
>contig7 len=800 path=[1:0-581 1284:582-799]
AGAGA...
>contig8 len=245 path=[815:0-151 745:152-244]
GATTA...
于 2013-05-23T09:17:09.687 に答える