キーワードを含む連続行を順番に選択

キーワードを含む連続行を順番に選択

次のようにタブ区切りのファイルがあります。

$ cat file
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558474.1  1159543 1160595 -4330977        polyketide synthase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558475.1  1160607 1161116 12      isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558476.1  1161113 1162129 -3      NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011559726.1  2496640 2497560 1334511 polyketide synthase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011559727.1  2497568 2498122 8       isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011562574.1  5526997 5528142 3028875 NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]

必ず抜かなければなりません。連続した行キーワード「ポリケチドシンターゼ」、「メチルトランスフェラーゼ」および「レドックス酵素」が含まれています。そのような順序で、さらに分析するために、各コレクションを別々のファイルに書き込みます。

この場合、入力ファイルは次のように2つの出力ファイルを生成します。

$ cat file_1
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558474.1  1159543 1160595 -4330977        polyketide synthase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558475.1  1160607 1161116 12      isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011558476.1  1161113 1162129 -3      NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]

$ cat file_2
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011559726.1  2496640 2497560 1334511 polyketide synthase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011559727.1  2497568 2498122 8       isoprenylcysteine carboxyl methyltransferase [Mycobacterium]
GCF_000015405.1_ASM1540v1.dist_nbr_anntn        WP_011562574.1  5526997 5528142 3028875 NAD(P)/FAD-dependent oxidoreductase [Mycobacterium]

awkを使用してこれを実行するのに問題があります。どんな提案がありますか?

ポリスチレン連続した行には、さまざまな数のキーワードインスタンスを含む他の入力ファイルがあります。これが私が詰まっているところです。

ベストアンサー1

スクリプトが進むにつれて、検索する項目を変更し、用語が循環するたびに記録される場所を変更できます。

awk 'BEGIN {
    result_file = 1;
    term_id = 1;
    search_terms[1] = "polyketide synthase";
    search_terms[2] = "methyltransferase";
    search_terms[3] = "oxidoreductase"
}
$0 ~ search_terms[term_id] { 
    print $0 >> FILENAME "_" result_file;
    term_id = term_id + 1;
    if (term_id > 3) {
        result_file =  result_file + 1;
        term_id = 1
    }
}' input_file

input_file_1この内容は、input_file_2... に作成されます。

おすすめ記事