removido
(usa Nenhuma)
Enviado em 05/01/2015 - 16:30h
Ricardo_Galossi escreveu:
fiz um teste simples e funcionou perfeitamente, mas quando coloco a entrada que preciso apagar da um erro, a entrada seria essa: @require(dirname(__FILE__).'/path/file.php'), dai quando dou o comando sed -i '-s/@require(dirname(__FILE__).'/path/file.php')//gi' /var/www/* da o seguinte erro: sed: -e expression #1, char 36: unknown option to `s'
to fazendo algo errado?
Sim, há erros aí. O primeiro é o hífen precedendo o comando "s" do sed. Além disto, o seu comando está tentando substituir
@require(dirname(__FILE__). por
path, usando flags desconhecidas, a letra "f" é a primeira. O sed pára a execução no primeiro erro encontrado e ignora o resto.
Você pode corrigir isto de duas formas:
sed -i 's|@require(dirname(__FILE__).'\''/path/file.php'\'')||gi' /var/www/*
ou
sed -i 's|@require(dirname(__FILE__).\x27/path/file.php\x27)||gi' /var/www/*
Modifiquei os delimitadores do comando "s" para facilitar a leitura, mas poderia ter escapado as barras do nome de arquivo também.
É necessário inibir as expansões do shell já que a sua string contém apóstrofos e a parte entre elas seria expandida pelo shell e, sem dúvidas, ou o comando não funcionaria ou teria feito substituições estranhas nos seus arquivos. Se fosse um script em sed, este recho não seria necessário. Esta parte é conhecimento básico em shell, não chega a ser "sed" ainda.