У меня есть ввод с такими строками (это строка CIGAR из формата sam, но сейчас это не имеет значения):

123M76N55M4S
6M7N25M
32M488N

И я хочу извлечь все N и предшествующие цифры:

76N
7N
488N

Я пробовал эту команду:

sed -r 's/^.*([0-9]+N).*$/\1/'

Но я получаю на выходе только последнюю цифру. Как я могу получить все предыдущие цифры?

1 ответ1

1

Этого будет достаточно:

grep -o '[0-9]\+N'

Ваше регулярное выражение sed терпит неудачу, потому что .* Слишком жадный. Вы должны убедиться, что вы не используете ни одну из цифр:

sed -r 's/(.*[^0-9])?([0-9]+N).*/\2/'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .