如何在某些行上替换以某些字符开头的单词?

时间:2012-05-10 11:39:13

标签: unix replace sed vcf

我正在尝试使用SED命令替换/删除文件中的rs号。 我有一个VCF文件:

##reference=file:/hs37d5.fasta

#CHROM  POS     ID      REF     ALT     QUAL    FILTER  INFO    FORMAT  SC_PCHD5235298

1       10234   rs145599635     C       T       153.34  .

我想在不以#开头的行上替换rs *条目, 例如,我想用点替换rs145599635。并希望它忽略标题,这些标题以#。

开头

我试过

sed "/^[^#]/s/rs.*/./g" test.vcf

但它删除了rs之后的所有内容。

1 个答案:

答案 0 :(得分:2)

你可以试试这个,

例如:

  sed -i 's/\(^[^#].*\)rs[0-9]\+\( .*\)/\1rs.\2/' test.vcf

我改变了你的命令。你必须这样写。

   sed -i "/^[^#]/s/rs[0-9]\+/rs./g" test.vcf

我的test.vcf文件看起来像这样。我认为你的文件只是这样。

  ##reference=file:/hs37d5.fasta

  #rs145599635 C T 153.34 .
  #1 10234  rs145599635 C T 153.34  .
  #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SC_PCHD5235298

  1 10234  rs145599635 C T 153.34  .

我希望这会对你有所帮助。