Unixのパターンマッチングとキャプチャ

Unixのパターンマッチングとキャプチャ

次のファイルがあります。

A1-1915435_1_MIMAT0000069_MirBase_miR-16_microRNA_1_22-A1-1915435_1_ENSG00000206737_ENST00000384010_U1_snRNA_73_115
A1-2362643_1_MIMAT0000732_MirBase_miR-378_microRNA_1_21-A1-2362643_1_ENSG00000222328_ENST00000410396_U2_snRNA_168_211

マイクロRNAセクションとENSGセクションの別々のタブを持つ出力が必要です。このような:

miR-16_microRNA ENSG00000206737
miR-378_microRNA    ENSG00000222328

Perlスクリプトを書くことはできますが、awk、sed Perlなどを使用するコマンドラインソリューションが必要です。

ベストアンサー1

perl -pe 's!.*(miR-\d+_microRNA).*(ENSG\d+).*!$1\t$2!'

説明する?

もちろんです。申し訳ありません。

  • 各行について (perl -p)
  • 正規表現を$1 tab $2whereに置き換える
    • $1$2キャプチャグループの逆参照として番号が付けられます(...)。ほとんどすべての最新の正規表現エンジンがこれをサポートします。
  • 正規表現情報:
    • . = を除くすべての文字\n
    • .*=文字シーケンス(代替では無視)
    • \d=数字(と同じ[0-9]
    • \d+= 1つ以上\d

何でも見てくださいreg式チュートリアルより詳細な説明が必要です。

おすすめ記事