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