web-development-kb-pt.site

Substituindo várias linhas em sed ou awk

Estou tentando usar sed ou awk para substituir 5 linhas em um arquivo SMB, mas eu não tenho idéia de como lidar com as novas linhas.

9
glisignoli

Sed é muito ruim nisso, porque opera uma linha de cada vez. A única técnica decente que já vi para fazer isso é esta , que envolve armazenar o arquivo inteiro no buffer de espera do SED e, em seguida, operar tudo de uma vez:

sed -n '1h;1!H;${g;s/search/replace/;p;}'

Se você puder, é muito mais fácil usar o Perl para realizar isso:

Perl -0pe 's/search/replace/'

search pode conter \ns para representar newlines

19
Michael Mrozek