SED $로 시작하는 정확한 단어 찾기 및 바꾸기

SED $로 시작하는 정확한 단어 찾기 및 바꾸기

내 PHP 파일에는 $downtime_hosts를 사용하여 정의된 일부 변수가 있습니다. 필요한 것은 $downtime_hosts = 8;파일에서 여러 번 사용되는 $downtime_hosts = 15;다른 변수에 영향을 주지 않고 전체 변수를 찾아 바꾸는 명령입니다.$downtime_hosts

여기에서 내 숫자 8,15,16은 언제든지 변경될 수 있습니다. 필요한 것은 $downtime_hosts = newinteger로 시작하는 줄을 찾아서 $downtime_hosts = anyinteger새 줄 $downtime_hosts = newinteger로 바꾸는 것입니다. 참고하시거나 anyinteger / newinteger=2,3,4,15아무거나

$downtime_hosts = 8;

$total_hosts = $all_hosts - $downtime_hosts;

if ($host_up == $total_hosts )

Hosts under downtime $downtime_hosts `

어떤 의견이라도 환영합니다!

답변1

sed 's/$downtime_hosts = 8;/$downtime_hosts = 15;/' file.php

$패턴 끝에서 발견되지 않는 한 앵커 역할을 하지 않으므로 문제가 발생하지 않습니다 . 스크립트 sed는 작은따옴표로 묶어야 합니다. 그렇지 않으면 쉘은 $downtime_hosts쉘 변수로 확장하려고 시도합니다.

줄 시작 부분의 패턴만 일치합니다.

sed 's/^$downtime_hosts = 8;/$downtime_hosts = 15;/' file.php

정수 8이 임의의 정수일 수 있는 경우:

sed 's/^$downtime_hosts = [0-9]*;/$downtime_hosts = 15;/' file.php

정수를 쉘 변수가 보유하는 정수로 바꾸려면 다음을 수행하십시오 $newint.

sed "s/^\$downtime_hosts = [0-9]*;/\$downtime_hosts = $newint;/" file.php

이제 쉘이 변수를 sed확장하려면 편집 스크립트 주위에 큰따옴표를 사용해야 합니다 . $newint이는 또한 우리가 두 개의 기존 쉘에서 탈출해야 함을 의미합니다 $.

관련 정보