Eu sei que isso foi respondido várias vezes, mas não consigo descobrir como usá-lo para meu projeto.
Eu tenho vários arquivos php e quero adicionar uma nova string entre as linhas 11 e 12.
esta é a string que eu quero adicionar
exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');
Eu acho que este é o caminho a percorrer (para um único arquivo, para vários eu vou usar * .php em vez de arquivo):
sed '12i\
exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');
' file.php
o que eu recebo:
[1] 29234
bash: $');\n': command not found
então eu acho que o bash apenas executa o comando exec ou algo assim.
como faço para adicionar uma string "longa" contendo espaços e coisas do tipo; ), 'o que parece atrapalhar o comando?
p.s .: adicionando "" ou "" não engana o pônei.
Bônus:
Eu também preciso "anexar" algo na linha 11 a partir disso:
exec('/var/www/streams/taketv.sh');
para isso
exec('/var/www/streams/taketv.sh > /dev/null 2>/dev/null &');
Se possível, para todos os arquivos .php. É sempre a linha 11; a única coisa que muda é "taketv.sh" para "abc.sh" ou qualquer coisa assim.
É a primeira ocasião em que "');" são mostrados nessa combinação, então tentei com algo parecido com isto (somente para um arquivo como teste):
sed -i "s/');/ > /dev/null 2>/dev/null &');" TakeTV.php
Eu acho que preciso usar o que mikeserv disse. Eu tentei, mas não funcionou.
sed -i 's\
'\'');/'\''/'\'' > /dev/null 2>/dev/null &');'\''
Meu plano era definir a "palavra antiga" e a "nova palavra" como uma frase fechada, acho que não a apliquei corretamente!