Isso será suficiente:
grep -o '[0-9]\+N'
Seu regex de segurança falha porque o .*
é muito ganancioso. Você precisa se certificar de não consumir nenhum dos dígitos:
sed -r 's/(.*[^0-9])?([0-9]+N).*//'
Eu tenho entradas com linhas como essa (é uma string CIGAR do formato sam, mas isso não importa agora):
123M76N55M4S
6M7N25M
32M488N
E eu quero extrair todos os N e dígitos anteriores:
76N
7N
488N
Eu tentei este comando:
sed -r 's/^.*([0-9]+N).*$//'
Mas entro na saída apenas o último dígito. Como posso obter todos os dígitos anteriores?