Как заменить слово, начинающееся с определенных символов в определенных строках?
Я пытаюсь использовать команду 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 ответ
Решение
Вы можете попробовать с этим,
Пример:
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 .
Я надеюсь, что это поможет вам.