Ao trabalhar com sed , normalmente acho mais fácil restringir consistentemente meu possível resultado. É por isso que às vezes me apóio no operador de negação ! . Muitas vezes, é mais simples eliminar a contribuição desinteressante do que selecionar o tipo interessante - pelo menos, essa é a minha opinião sobre o assunto.
Acho esse método mais in-line com o comportamento padrão de sed - que é imprimir automaticamente o espaço padrão no final do script. Para coisas simples como essa, também pode resultar mais facilmente em um script robusto - um script que não depende das extensões de sintaxe de certas implementações para operar (como é comumente visto com sed {functions} ) .
É por isso que eu recomendei que você fizesse:
sed '10,15!d;/pattern/!d;=' <input
... que primeiro corta qualquer linha fora do intervalo de linhas 10 & 15, e dentre aqueles que permanecem, qualquer linha que não corresponda a pattern . Se você achar que prefere que o número da linha sed seja impresso na mesma linha da linha correspondente, provavelmente veria paste nesse caso. Talvez ...
sed '10,15!d;/pattern/!d;=' <input |
paste -sd:\n -
... que apenas substituirá a entrada \n ewlines por um caractere : ou outro \n ewline.
Por exemplo:
seq 150 |
sed '10,50!d;/5/!d;=' |
paste -sd:\n -
... imprime ...
15:15
25:25
35:35
45:45
50:50