Usando saída de diff -e com sed

2

Atualmente estou tentando alterar o conteúdo de um arquivo

orig.sas 

para corresponder ao conteúdo de um arquivo atualizado

new.sas

Substituindo orig.sas por new.sas faz algumas mudanças, mas existem muitos diretórios referenciados dentro do orig.sas que eu não quero alterados.

O envio do seguinte código gera um script 'changes.txt' com todas as linhas que precisam ser alteradas no orig.sas para torná-lo idêntico ao new.sas

diff -e orig.sas new.sas > changes.txt

changes.txt tem esta aparência (a saída completa tem muito mais linhas):

3668c
label DBMS=xlsx replace;
.
3649,3665d
3643d

A partir daqui, removi todas as linhas que referenciam as alterações nos diretórios, portanto, apenas o corpo do código é afetado.

Acho que devo poder enviar este script para o sed (com o objetivo de fazer todas as alterações changes.txt) usando algo como:

sed - orig.sas < changes.txt

Mas eu não quero sobrescrever diretamente o orig.sas, preferindo exportar para um arquivo da versão 2 (por exemplo: orig_v2.sas)

Espero que seja claro, qualquer ajuda ou orientação daqui é muito apreciada. Existe uma maneira mais simples de fazer isso que estou perdendo? Obrigado antecipadamente!

Meu progresso até esse ponto veio da instrução do link

    
por Jack Osborne 20.02.2018 / 14:46

1 resposta

2
O resultado de

diff -e é suposto ser feed (modificado) para ed .

tente

diff -e orig.sas new.sas > changes.txt
echo wq >> changes.txt

ed orig.sas < changes.txt

onde

  • wq irá w rite e q uit, imprimindo o número de caracteres escritos
  • opcional --silent não será exibido acima da contagem.

veja man ed para mais informações.

editar

Eu não consigo ver o ponto no diff para aplicar o diff no arquivo original, parece-me que cp new.sas orig_v2.sas faria

Suponho que você tenha isso em mente: dois ramos alpha N e bravo N

diff -e alpha1.sas alpha2.sas > change12.txt

(cat change12.txt
 echo w bravo2.sas
 echo q ) | ed bravo.sas

isso informará sobre bravo N alterações feitas em alpha N

    
por 20.02.2018 / 15:25

Tags