列の特定のパターンに基づいてデータを抽出する

列の特定のパターンに基づいてデータを抽出する

次のデータセットがあります。

AAACCTGCAAGCGAGT-1,ENSG00000000419,DPM1,2
AAACCTGCAAGCGAGT-1,ENSG00000001497,LAS1L,1
AAACCTGCAAGCGAGT-1,ENSG00000002330,BAD,1
AAACCTGCAAGCGAGT-1,ENSG00000002549,MT-CO3,2
AAACCTGCAAGCGAGT-1,ENSG00000002586,CD99,5
AAACCTGCAAGCGAGT-1,ENSG00000002834,LASP1,1
AAACCTGCAAGCGAGT-1,ENSG00000003056,M6PR,1
AAACCTGCAAGCGAGT-1,ENSG00000003402,MT-CYB,2
AAACCTGCAAGCGAGT-1,ENSG00000004059,ARF5,2
AAACCTGCAAGCGAGT-1,ENSG00000004455,AK2,1
AAACCTGCAAGCGAGT-1,ENSG00000004468,CD38,8
AAACCTGCAAGCGAGT-1,ENSG00000004779,NDUFAB1,3
AAACCTGCAAGCGAGT-1,ENSG00000004975,DVL2,1
AAACCTGCAAGCGAGT-1,ENSG00000005022,SLC25A5,6

私は3番目の列に「MT-」パターンを持つミトコンドリア遺伝子を含むデータを取得したいと思います。たとえば、上記のデータセットから次のものを抽出したいとします。

AAACCTGCAAGCGAGT-1,ENSG00000002549,MT-CO3,2
AAACCTGCAAGCGAGT-1,ENSG00000003402,MT-CYB,2

私は次のコマンドを使用します。

awk '$3 ~/^MT-/ {print $1, $2, $3, $4} final_matrix.csv

しかし、それはうまくいきませんでした。

ベストアンサー1

デフォルトでは、awkではフィールドをスペースで区切る必要があります。ファイルがコンマで区切られている場合は、コマンド-Fラインオプションを使用するか、内部awk変数を設定してFSフィールド区切り文字を適切に設定する必要があります。

出力をコンマで区切るには、これを設定する必要がありますOFS

前任者。

$ awk -F, 'BEGIN{OFS=FS} $3 ~ /^MT-/ {print $1, $2, $3, $4}' final_matrix.csv
AAACCTGCAAGCGAGT-1,ENSG00000002549,MT-CO3,2
AAACCTGCAAGCGAGT-1,ENSG00000003402,MT-CYB,2

おすすめ記事