Sed держать цифру и сбросить расширение - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть файл со строками, заголовок которых содержит следующий шаблон (разделенный табуляцией)

1.mapped.bam 2.mapped.bam 3.mapped.bam ....

Я хотел бы

SAMPLE_1 SAMPLE_2 SAMPLE_3 .....

Я пробовал:

sed -r 's/([0-9])(.mapped.bam)/SAMPLE_\1/g 

но получил

1SAMPLE_1 2SAMPLE_2 3SAMPLE_3 ???

1 Ответ

0 голосов
/ 04 декабря 2018

Вы можете использовать следующее решение POSIX ERE:

sed -E 's/([0-9]+)\.mapped\.bam/SAMPLE_\1/g'

Эквивалентное решение BRE POSIX:

sed 's/\([0-9][0-9]*\)\.mapped\.bam/SAMPLE_\1/g'

См. online sed demo

Здесь

  • ([0-9]+) - Группа 1 (позднее упоминается с помощью \1 заполнитель из RHS, шаблон замены): одна или несколько цифр
  • \.mapped\.bam - литеральная .mapped.bam подстрока.

Обратите внимание, что как в POSIX BRE, так и в ERE точки вне выражений скобок должны быть экранированы, чтобы соответствовать буквальным точкам, а захватывающие скобки должны быть экранированы в POSIX BRE..

...