sed com várias correspondências

1

As duas "linhas sed" diferem apenas por um "\ n" abaixo ..
Como posso obter essa saída [sem nova linha antes do </pre> ]? [ link ]:
. e . e something3
</pre>
something4
.
.


$ echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5'; echo "######################################"; echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5' | sed -e N -e N -e "s#\n</pre>#</pre>#g" -e P -e D em something1 em something2 em something3

</pre>
something4
something5
######################################
something1
something2
something3</pre>
something4 em something5 em $ em $ echo -e 'something1\nsomething2\nsomething3\n\n</pre>\nsomething4\nsomething5' | sed -e N -e N -e "s#\n</pre>#\n</pre>#g" -e P -e D em something1 em something2 em something3 em </pre> br > something4
something5
$

    
por LanceBaynes 19.01.2011 / 22:28

1 resposta

2

Experimente:

sed 's|\(.\+\)\(</pre>\)$|\n|;t;N;\|\n</pre>$|s|^[[:blank:]]*\n||;P;D' inputfile

O resultado:

something1
something2
something3
</pre>
something4
something5
######################################
something1
something2
something3
</pre>
something4
something5

Observe que as duas instâncias de </pre> estão em uma linha sozinhas sem uma linha em branco precedente.

Editar: Corrigido um problema com a exclusão das linhas erradas.

    
por 19.01.2011 / 22:49