2012-05-10 4 views
1

Я пытаюсь использовать команду 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.

ответ

2

Вы можете попробовать с этим,

Ex:

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

Я изменил ваш command.You должен написать, как это.

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 . 

Я надеюсь, что это вам поможет.

+0

спасибо :) Это отвечает на мой вопрос. – user1007742

+0

Возможно, «sed -i» /^#/!s/rs[0-9]\+/rs./g «test.vcf» будет немного проще на глаз? – potong