我正在尝试编辑一个注释文件。表格如下:
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"