1つのテスト文字列を特定の列の別のテスト文字列に置き換え、区切り文字を保持します。

1つのテスト文字列を特定の列の別のテスト文字列に置き換え、区切り文字を保持します。

スペースで区切られたテキストファイルがあります。

NC_005943.1 RefSeq CDS 3259 4213 . + 0 gene_id "ND1";
NC_005943.1 RefSeq CDS 4421 5462 . + 0 gene_id "ND2";
NC_005943.1 RefSeq CDS 5850 7418 . + 0 gene_id "COX1";
NC_005943.1 RefSeq CDS 7532 8215 . + 0 gene_id "COX2";
NC_005943.1 RefSeq CDS 8357 8563 . + 0 gene_id "ATP8";

$ 9の「gene ID」文字列を「transcript_id」に置き換える必要があります。

行為:

awk -F " " '{ if ($9 == "gene_id") $9="transcript_id";}2' OFS=, genes_2.gtf | head

私にしてください:

NC_005943.1,RefSeq,CDS,3259,4213,.,+,0,transcript_id,"ND1";
NC_005943.1,RefSeq,CDS,4421,5462,.,+,0,transcript_id,"ND2";
NC_005943.1,RefSeq,CDS,5850,7418,.,+,0,transcript_id,"COX1";
NC_005943.1,RefSeq,CDS,7532,8215,.,+,0,transcript_id,"COX2";
NC_005943.1,RefSeq,CDS,8357,8563,.,+,0,transcript_id,"ATP8";

...カンマ区切りの区切り記号。

スペース区切り記号を保存する必要があります。私はawk -Fに問題があることを知っていますが、フラグを空白に変更するのに問題があります。

とても感謝しています。

答え1

これは働きます:

awk '{ $9 = "transcript_id"; print }' genes_2.gtf

関連情報