Unix 如何替换某些行中以某些字符开头的单词?
我正在尝试使用SED命令替换/删除文件中的rs编号。 我有一个VCF文件: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
##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 .