各列の行から部分文字列を抽出する

各列の行から部分文字列を抽出する

次のように、20,000行を超えるテキストファイルがあります。

7   128550681   128550681   Intron:1:36:RETAINED-RETAINED;Transcript:NM_001135914.1;Gene:KCP:protein_coding 1   1   0   0
1   17718672    17718672    Intron:9:16:RETAINED-RETAINED;Transcript:NM_207421.4;Gene:PADI6:protein_coding  1   1   0   0
1   17718672    17718672    Intron:9:16:RETAINED-RETAINED;Transcript:NM_207421.4;Gene:PADI6:protein_coding  1   1   0   0
4   86035   86035   Exon:4:5:RETAINED;Transcript:NM_001286052.1;Gene:ZNF595:protein_coding  1   1   0   0
3   12942851    12942851    Intron:14:14:SKIPPED-ALTTENATIVE_3SS;Transcript:NM_001134382.2;Gene:IQSEC1:protein_coding   1   1   0   0

必要なのは、4番目の列にGene:genenameのみが含まれているため、出力は次のようになります。

7   128550681   128550681   Gene:KCP    1   1   0   0
1   17718672    17718672    Gene:PADI6  1   1   0   0
1   17718672    17718672    Gene:PADI6  1   1   0   0
4   86035   86035   Gene:ZNF595 1   1   0   0
3   12942851    12942851    Gene:IQSEC1 1   1   0   0

Gene:genename*:押したり分割したりすると、問題は常に同じ場所に表示されません。;

私は特定の列を選択する方法、特定のパターンを含む行を見つける方法など、非常に基本的なawk / sedを知っています。

ベストアンサー1

awk次のコマンドを使用してこれを実行できました。

awk '{sub(/^.*;/,"",$4); print}' input

これにより、最後の項目までの列4の内容がすべて削除され、機能しなくなる可能性があり;ます(Steeldriverの説明を参照)。この場合は、明確な説明を含む質問を更新してください。

おすすめ記事