파일의 특정 줄에 텍스트를 삽입하시겠습니까? 특수문자 포함

파일의 특정 줄에 텍스트를 삽입하시겠습니까? 특수문자 포함

이 질문에 대해 여러 번 답변을 받았지만 내 프로젝트에 이 질문을 사용하는 방법을 모르겠습니다.

여러 개의 PHP 파일이 있는데 11행과 12행 사이에 새 문자열을 추가하고 싶습니다. 추가하고 싶은 문자열입니다.

exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');

나는 이것이 갈 길이라고 생각합니다 (단일 파일의 경우 여러 파일의 경우 파일 대신 *.php를 사용합니다).

sed '12i\
exec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');
' file.php

내가 얻는 것:

[1] 29234                                                                                                            
bash: $');\n': command not found  

그래서 나는 bash가 exec 명령이나 다른 것을 실행한다고 생각합니다.

공백과 유사한 내용이 포함된 "긴" 문자열을 어떻게 추가합니까? ' 명령이 엉망이 되는 것 같나요?

추신: "" 또는 ""를 추가해도 조랑말을 속일 수는 없습니다.

보너스:

또한 11번째 줄에 뭔가를 "추가"해야 합니다.

exec('/var/www/streams/taketv.sh'); 

이와 관련하여

exec('/var/www/streams/taketv.sh > /dev/null 2>/dev/null &'); 

가능하다면 모든 .php 파일에 적용하세요. 항상 11번째 줄입니다. 변경되는 유일한 것은 "taketv.sh"에서 "abc.sh" 또는 이와 유사한 것입니다.

이 조합에 " '); "가 처음으로 등장했기 때문에 다음과 같이 시도해 보았습니다(테스트로 1개 파일에만 해당).

 sed -i "s/');/ > /dev/null 2>/dev/null &');" TakeTV.php

나는 mikeserv가 말한 것을 사용해야한다고 생각합니다. 나는 그것을 시도했지만 성공하지 못했습니다.

sed -i 's\                                                                             
'\'');/'\''/'\'' > /dev/null 2>/dev/null &');'\''    

내 계획은 "이전 단어"와 "새 단어"를 닫는 따옴표로 설정하는 것이었지만 올바르게 적용하지 않은 것 같습니다!

답변1

여러 유형의 따옴표를 사용하거나 이스케이프 처리해야 합니다.

sed -i "12iexec('/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &');" *.php      

보너스:

 sed -i "s|exec('/var/www/streams/taketv.sh');|exec('/var/www/streams/taketv.sh > /dev/null 2>/dev/null \&');|" 

답변2

sed '12i\
exec('\''/var/www/scripte/autostandby.sh > /dev/null 2>/dev/null &'\'');
' file.php

전체 내용을 인용해야 합니다.

문제는 인용된 문자열 안에 인용문을 삽입하려고 한다는 것입니다. 이것은 작동하지만 인용문을 인용해야 합니다.

command 'begin quoted arg'\''
   close quotes
   backslash quote the apostrophe
   open quotes again
'\'' end quoted arg'

그러나 다음 사항 없이도 할 수 있습니다.

sed -e'11s|.)[^)]*$| >/dev/null 2>/dev/null&|p' \
    -e'11s|www.*sh|www/scripte/autostandby.sh|' <in >out

a그러나 pend, insert 또는 hange를 사용하는 경우 c질문에서 수행하려는 작업을 수행하는 것이 좋습니다. 이러한 명령은 명령과 명령 사이에 개행 구분 기호가 필요하도록 지정됩니다.텍스트그들이 취하는 주장.

관련 정보