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

Unix 如何替换某些行中以某些字符开头的单词?,unix,replace,sed,vcf-vcard,Unix,Replace,Sed,Vcf Vcard,我正在尝试使用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*条目, 例如,我想用点替换rs14

我正在尝试使用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。并希望它忽略以a开头的行的标题

我试过了

sed "/^[^#]/s/rs.*/./g" test.vcf
但它会删除rs之后的所有内容。

您可以尝试使用此功能

例:

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

   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  .
我希望这能对你有所帮助。

也许是sed-I/^/!s/rs[0-9]\+/rs./g 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  .