substitui texto longo por caracteres especiais com sed

0

Estou usando sed no unix para substituir algum texto por caracteres especiais em um arquivo. Eu pesquiso no Google e encontro o seguinte comando

sed 's/from/to/g' file.txt

aqui 'de' é o texto original sendo substituído, 'to' é o texto de substituição

Estou tentando aplicar isso a um arquivo com texto longo com caracteres especiais, ou seja, substituindo "/D/dec/prog/g++.exe -Wall --std = c ++ 0x" (sem aspas) para "SYSTEM_PATH / BIN", eu tentei o seguinte, mas não funciona

sed 's//D/dec/prog/g++.exe   -Wall --std=c++0x/SYSTEM_PATH/BIN/g' file.txt

mas isso aparece com o erro "sed: -e expressão # 1, char 10: opção desconhecida para 's'".

Eu sou iniciante no unix, mas por alguma razão eu preciso logar remotamente um servidor unix para manipular algum arquivo. Eu quero saber

1) como eu posso definir o de e para string para uma variável, algo como FROMSTR = '/D/dec/prog/g++.exe -Wall --std = c ++ 0x' TOSTR = 'SYSTEM_PATH / BIN'

para que eu possa chamar o sed como     sed / $ FROMSTR / $ TO / g 'file.txt

mas parece que o sed não sabe interpretar isso como variável

2) depois de substituir o texto por sed, ele não grava o resultado no arquivo original. Como fazer dar certo?

    
por user1285419 30.12.2012 / 02:58

1 resposta

0

O comando substituto não precisa para usar / como o delimitador.

sed 's!/D/dec/prog/g++.exe   -Wall --std=c++0x!SYSTEM_PATH/BIN!g' file.txt
    
por 30.12.2012 / 03:07

Tags