向字符串添加更多信息

向字符串添加更多信息

我有一个像这样的 gtf 文件:

ChrI    Coding_transcript       gene    8451772 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1"

我现在想在第 9 列中添加更多信息,使其看起来像这样:

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"; transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";

有谁知道我可以使用任何简单的命令来制作这个文件?太感谢了!

答案1

尝试这个:

awk 'NF==10{print $0";transcript_id "$10", exon_id ""\""++count[$3]"\""";"}NF!=10{print $0}' file.gtf

输出:

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";
  • NF==10检查字段数是否为 10。
    • print $0打印完整的行。
    • transcript_id $10因为它与gene_id相同
    • ++count[$3]打印外显子的出现次数(第三个字段)
  • NF!=10只需打印该行即可。

相关内容