De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.

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.

Adicionar comentário

* Campos obrigatórios
5000
Powered by Commentics

Comentários

Nenhum comentário ainda. Seja o primeiro!


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