将一个测试字符串替换为特定列中的另一个测试字符串并保留分隔符

将一个测试字符串替换为特定列中的另一个测试字符串并保留分隔符

我有一个以空格分隔的文本文件:

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

相关内容