Как заменить слово, начинающееся с определенных символов в определенных строках?

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

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

Другие вопросы по тегам