2017-12-29 14 views
1

플러그인을 사용하면 2 개의 WordPress 파일 (php)을 업데이트 할 때마다 가장 적합한 일부 라인에 대한 자동 수정 기능을 얻고 싶습니다.셸 스크립트의 전체 내용 줄 검색 및 바꾸기

CentOS에서 내 웹 사이트를 실행하고 있으며 컴퓨터를 완전히 제어 할 수 있으므로 자동화 된 작업을 위해 Cron을 통해 쉘 스크립트를 실행할 수 있습니다.

제 3 자 플러그인이고 소유자가 내 웹 사이트에만 맞춤 설정하기 때문에 장소에서 변경 될 수 있으므로 행 번호가 아닌 어떻게 검색하고 바꿀 수 있습니까? "버그 수정"을 요청할 수는 없습니다. 버그가 아니기 때문에 내 웹 사이트가 개선되었습니다.) 나는 mods를 짧게 만들 것입니다. 왜냐하면이 두 파일을 적용하는 mods 톤이 될 것이고 나는 이것을하는 방법에 대한 아이디어가 필요합니다. function dump_files($warning = false) { 및 교체 :

클래스 recovery.php

검색에 대한 function dump_files($warning = false) { $cancel_order;

클래스 prompt.php

검색 : private $replace_only; 및 교체 : private $replace_only = true;

어떻게 나는 이것을 끝내 느냐? StackOverFlow를 탐색 중이었고 일부 사용자가 검색을 위해 sed을 사용하고 바꿀 것을 제안했지만이 내용은 텍스트가 아니기 때문에 php 개의 파일이므로이 sed이 적용됩니까? 아니면 이것에 대한 더 나은 해결책이 있습니까?

--EDIT 어떻게 여러 줄을 검색하고 SED를 사용하여 바꿀 수 있습니까? 나는 전통적인 방식을 사용하고 있었지만 2 줄 (그리고 위의) 들여 쓰기 때 대체하지 않습니다. 예 :

if (empty($donot_dump)) { 
       return true; 

답변

1

예,의 코스 sed 그 문제에 대한 모든 텍스트 파일 형식으로 적용 할 수 있습니다

if (empty($donot_dump)) { 
       return false; 

과 같이합니다. 검색 및 바꾸기 구문은 s/orignial/replace 구문을 사용하면됩니다. -i 구문을 사용하면 파일의 내용을 직접 바꿉니다. 그래서 당신이 필요

sed -i.bak "s/function dump_files(\$warning = false) {/function dump_files(\$warning = false) { \$cancel_order;/g" class-recovery.php 

이고 두 번째 파일

sed -i.bak "s/private \$replace_only;/private \$replace_only = true;/g" class-prompt.php 

는 일반적으로 우리는 sed의 인수를 주위에 ' (작은 따옴표)를 사용하지만, 우리는 소스 문자열의 주위에 공간이 있기 때문에 우리가 필요 보존하면 문자열을 이중 인용 부호로 묶어줍니다. 또한 큰 따옴표 앞에는 $이 있으며 특별한 의미가 있습니다. 즉 쉘은 변수를 변수로 처리하고 확장하려고 시도합니다. 변수가 아니라 문자 그대로라는 것을 알기 위해서는 \으로 이스케이프 처리해야합니다. -i.bak

가 의도 한대로 sed이 파일의 내용을 대체하지 않을 경우 있도록 확장 .bak 아래에있는 파일의 복사본을 저장 가능하고, 원본을 대체하는 것입니다, 당신은 항상이 파일을 복원 할 수 있습니다.

.bak을 제거하고 백업 파일을 저장하지 않으려면 -i으로 유지하십시오.


교체 문자열을 새 줄 문자가 필요에 따라 서식을 가지고 \\n 평소 공백을 필요로하는 경우. 예 :

sed "s/function dump_files(\$warning = false) {/function dump_files(\$warning = false)\\n { \$cancel_order;/g" file 

function dump_files($warning = false) 
{ $cancel_order; 
+0

위대한 아래와 같은 출력을 생성합니다! 고마워 친구 :) – Diego

관련 문제