Omics - Hunter

批量替换文件中字符-如:`chr`

很久前遇到的一个问题,今天又偶然想起和大家分享,就是我们使用gtf做注释在比对或者组装基因、转录本的时候回报错,时常是因为基因组时和ref不对应(比如建立索引时有chr,组装时gtf没有chr等;其中hisat2等软件可以用参数设置来避免:–remove-chrname和–add-chrname)

下面我们用perl来快速替换chr和添加chr:

如上,gtf文件中染色体没有chr只是数字,我用命令行来添加chr

# 直接修改,无备份
perl -pi -e 's/^(\d+)/chr$1/' test.gtf

# 修改,且保留备份.bak,注意-i和.bak之间不用空格
perl -p -i.bak -e 's/^(\d+)/chr$1/' test.gtf

其中参数:

-i extension:在使用 循环遍历文件时启用原位编辑模式。 如果没有规定扩展名的话,则原位修改各行内容,否则使用扩展名来修改输入文件名(以便充当备份文件),并使用原位编辑的原文件名创建输出文件。

-p:使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。

-e command:用于再命令行而不是在脚本中执行 Perl 命令。

同理我们也可以去掉chr:

# 直接去掉
perl -pi -e 's/^chr(\d+)/$1/' test.gtf

如果需要批量修改某文件,可以采用和find连用:

find ./ -name "*.gtf" | xargs perl -p -i.bak -e 's/^(\d+)/chr$1/'

参考资料:

1.https://metacpan.org/


作者:陈浩


版权:本文版权归作者所有


免责声明:本文中使用的部分图片来自于网络或者参考资料,如有侵权,请联系博主:chenhao__@__evvail.com(发件请删除下划线)进行删除


转载注意:除非特别声明,本站点内容均为作者原创文章,转载须以链接形式标明本文链接


本文链接:https://evvail.com/2022/04/03/2701.html

1 评论

  1. 陈浩

    2022/4/3 在 22:49

    当然这个也可以衍生出很多批量替换文本的方法,大家可以自由发挥。

发表回复

如果你有什么好的建议或者疑问请给我留言,谢谢!

Captcha Code