私は次のファイルを持っています:
chr1 157784 157887 U6 0 -
chr1 564813 564881 miRNA 0 +
chr1 564879 564950 tRNA 0 -
chr1 564952 565019 tRNA 0 +
chr1 566062 566129 piRNA 0 +
chr1 566137 566205 tRNA 0 -
4列目の式の単語が「piRNA」または「miRNA」で始まらない場合は、「rfam」という単語に置き換えます。
期待される出力:
chr1 157784 157887 rfam 0 -
chr1 564813 564881 miRNA 0 +
chr1 564879 564950 rfam 0 -
chr1 564952 565019 fram 0 +
chr1 566062 566129 piRNA 0 +
chr1 566137 566205 rfam 0 -
注:フィールド4には、U6やtRNAだけでなく、さまざまな名前があります。これは、piRNAまたはmiRNA以外の単語に対して機能する必要があります。
awk -v OFS='\t' '$4 !~ /^[pm]iRNA/ { $4 = "rfam" } ; { $4 = $4 ; print }' file
これはあなたが要求したことを正確に実行します-フィールド4が正規表現^[pm]iRNA
と一致しない場合は、に設定しrfam
ます。次に、変更されたかどうかに関係なく、行を印刷します。
注:出力の一貫性を確保するため$4 = $4
に、出力フィールド区切り文字(OFS)をタブに設定し、printステートメントの前に追加しました(出力行のフィールド区切り文字がOFSに変更されるという副作用があります)-そうしないと、変更された行はデフォルト(単一スペース)としてOFSを持ち、変更されていない行は元のファイルの行から変更されないため、cat
またはを使用して端末で表示したときに列が正しく整列しない可能性があります。なんでも。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加