编辑注释文件中的某一列



我正在尝试编辑一个注释文件。表格如下:

chr10   HAVANA  gene    92834713        93059493        .       +       .       gene_id "ENSG00000138190.16"
chr10   HAVANA  gene    92878092        92878289        .       -       .       gene_id "ENSG00000225118.1"
chr10   HAVANA  gene    93059663        93060426        .       -       .       gene_id "ENSG00000226425.1"
chr10   HAVANA  gene    93060808        93069536        .       +       .       gene_id "ENSG00000187553.8"

我想删除gene_id列中的基因"version",并获得类似的"ENSG00000187553"而不是"ENSG00000187553.8"

chr10   HAVANA  gene    92834713        93059493        .       +       .       gene_id "ENSG00000138190"
chr10   HAVANA  gene    92878092        92878289        .       -       .       gene_id "ENSG00000225118"
chr10   HAVANA  gene    93059663        93060426        .       -       .       gene_id "ENSG00000226425"
chr10   HAVANA  gene    93060808        93069536        .       +       .       gene_id "ENSG00000187553"

有什么办法吗?(使用awk或其他类似命令(

您可以进行替换以从最后一个字段中删除版本:

$ awk '{sub(/[.][0-9]+"/, """, $NF)}1' file
chr10 HAVANA gene 92834713 93059493 . + . gene_id "ENSG00000138190"
chr10 HAVANA gene 92878092 92878289 . - . gene_id "ENSG00000225118"
chr10 HAVANA gene 93059663 93060426 . - . gene_id "ENSG00000226425"
chr10 HAVANA gene 93060808 93069536 . + . gene_id "ENSG00000187553"

由于有问题的字段是最后一个字段,正如评论中所指出的,一个更好的选择可能是将行作为一个整体来处理,并以这种方式保留原始间距:

$ awk '{sub(/[.][0-9]+"/, """)}1' file
chr10   HAVANA  gene    92834713        93059493        .       +       .       gene_id "ENSG00000138190"
chr10   HAVANA  gene    92878092        92878289        .       -       .       gene_id "ENSG00000225118"
chr10   HAVANA  gene    93059663        93060426        .       -       .       gene_id "ENSG00000226425"
chr10   HAVANA  gene    93060808        93069536        .       +       .       gene_id "ENSG00000187553"

最新更新