você está aqui: Home  → Arquivo de Mensagens

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

Opinião dos Leitores

Val
22 Set 2012, 15:52
Tenho a impressão que a linha:

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

Está errada! Será que não falta aspas apos o quad.h?
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script