我正在尝试编辑注释文件。该表如下所示:
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或其他类似命令)
答案 0 :(得分:1)
您可以替换以从最后一个字段中删除版本:
$ 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"