você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

SED - Substituição de caracteres com backup do arquivo original

Colaboração: Rubens Queiroz de Almeida

Data de Publicação: 21 de setembro de 2012

Suponhamos que você tenha centenas de programas, por exemplo, na linguagem C, e queira inserir após um determinado local nestes programas, uma linha adicional.

Tomando como exemplo um arquivo chamado programa.c, com o seguinte conteúdo:

#include "quad.h"

#define	B	((int)1 << HALF_BITS)	/* digit base */

... (linhas omitidas)

Para incluir uma linha contendo o texto #include "header.h" após a linha #include "header.h" use o seguinte comando:

sed -i 's/#include "quad.h/#include "quad.h\n#include "header.h"/' programa.c

Após a execução, temos:

#include "quad.h"
#include "header.h"

#define B       ((int)1 << HALF_BITS)   /* digit base */

A quebra de linha é indicada por \n.

É recomendável fazer um backup antes de fazer mudanças radicais em muitos arquivos. O próprio comando sed oferece esta opção. Por exemplo, para criar um backup dos arquivos modificados usando como sufixo a data em que foi feita a modificação, podemos usar:

sed -i_`date +%Y%m%d` 's/#include "quad.h/#include "quad.h\n#include "header.h"/' programa.c

Será criado um arquivo de backup, para o exemplo acima, chamado programa.c_20120921.

O valor do sufixo é determinado pelo resultado do comando date +%Y%m%d.



Veja a relação completa dos artigos de Rubens Queiroz de Almeida