美文网首页一起生信啦啦啦
去除基因id后的小数点信息

去除基因id后的小数点信息

作者: 苏牧传媒 | 来源:发表于2018-11-15 19:59 被阅读51次

    有的文件geneid带有版本信息需要去掉,以匹配其他文件:

    要去掉的是第四列

    要匹配的文件如:

    基因名对应关系文件

    命令:

    awk 'BEGIN{OFS="\t"} {gsub(/.[0-9]$/,"",$4); print $0}' mm10.ensembl.ref.bed | head

    原理:

    此bed文件的第四列,使用gsub进行替换,将符合/.[0-9]$/的替换成""空格。

    如果有多列,怎用gsub多次,加;即可。

    去除后效果

    好像有bug,有的去掉后还剩余小数点,咋回事?

    原来是有的后面是是两个!坑爹呀!

    看了原始教程:

    http://www.endmemo.com/program/R/gsub.php 

    发现自己理解有误:

    改为:

    awk 'BEGIN{OFS="\t"} {gsub(/[:.:][0-9]/,"",$4); print $0}' mm10.gencode-vm18.compre.bed > 1.txt

    使用awk-length查看:

    awk '{print length($4)}' 1.txt | sort | uniq -c

    还有问题 竟然去掉的是.和后面的一个数字

    重要!

    awk 'BEGIN{OFS="\t"} {gsub(/[:.:].{1,2}/,"",$4); print $0}' mm10.gencode-vm18.compre.bed > 1.txt

    {1,2}意思是.号要匹配一到两次

    或者:

    awk 'BEGIN{OFS="\t"} {gsub(/[:.:].+/,"",$4); print $0}' mm10.gencode-vm18.compre.bed > 1.txt

    +意思是至少匹配一次

    查看,果然行:

    !!!我常用的命令:

    awk 'BEGIN{OFS="\t"} {gsub(/[:.:].+/,"",$1); print $0}' 1.txt > 2.txt

    结论:正则匹配用的真不熟!

    1 2

    相关文章

      网友评论

        本文标题:去除基因id后的小数点信息

        本文链接:https://www.haomeiwen.com/subject/mjrufqtx.html