sed.exe expressão no arquivo bat

0

Estou usando a porta do Windows de sed.exe .

Quando faço algo assim diretamente na linha de comando:

sed.exe -i "s/WRITE;/WRITE; TRUNCATE TABLE 'Team_matchdayResults';/g" my_script.sql

tudo funciona perfeitamente e as partes do texto são alteradas no arquivo my_script.sql .

Agora, quero fazer exatamente o mesmo, mas a partir de um arquivo .bat . O que eu sei é que eu tenho que escapar de aspas duplas lá, então eu fiz assim.

sed.exe -i ""s/WRITE;/WRITE; TRUNCATE TABLE 'Team_matchdayResults';/g"" my_file.sql

Infelizmente, isso termina com o seguinte erro

sed.exe: -e expression #1, char 15: unterminated 's' command

Suponho que tenho que escapar de algo mais, mas parece que não tenho ideia do que exatamente. Eu li em algum lugar que ; deve ser escapado em um arquivo de lote, mas apenas em FOR loop. No entanto, isso não me trouxe mais nada.

O que eu tenho para escapar mais?

    
por Jagger 15.05.2017 / 13:15

1 resposta

1

Eu baixei o GNU Sed para Windows apenas para testar isso e descobri que você não precisa escapar qualquer coisa para ele funcionar dentro de um arquivo .bat . Aspas " e seus conteúdos são interpretados corretamente.

test.txt contents:

Test0 WRITE;
Test1 WRITE
Test2 WRITE;

test.bat contents:

sed -i "s/WRITE;/WRITE; TRUNCATE TABLE 'Team_matchdayResults';/g" test.txt

Novo conteúdo de test.txt , depois de executar test.bat :

Test0 WRITE; TRUNCATE TABLE 'Team_matchdayResults';
Test1 WRITE
Test2 WRITE; TRUNCATE TABLE 'Team_matchdayResults';

Você experimentou o Cygwin ? Ele permite a execução e o script de comandos comuns do UNIX no Windows.

    
por 15.05.2017 / 15:32