매개변수를 일치시키고 "=" 구분 기호 뒤의 값을 바꾸는 방법

매개변수를 일치시키고 "=" 구분 기호 뒤의 값을 바꾸는 방법

파일의 값을 바꾸는 perl oneliner 명령은 간단합니다.

perl  -i  's/oldval/newval/g' file.txt

그러나 특정 매개변수의 값을 바꾸려면(값은 "=" 구분 기호 뒤에 있음) Perl 한 줄 구문은 무엇이어야 합니까?

우리는 일치하고 싶어VIP_IP문자열을 입력하고 "=" 구분 기호 뒤의 값을 다른 값으로 바꿉니다.192.17.200.100 (Perl 한 줄 구문 사용)

more file.txt

VIP_IP=172.17.200.15

if [[ $VIP_IP = $HOST_IP ]]
then

.
.
.

기대되는 성과

more file.txt

VIP_IP=192.17.200.100

if [[ $VIP_IP = $HOST_IP ]]
then

.
.
.

답변1

정규 표현식에 키를 포함하세요.

작성 방법을 정확히 알고 있다면 긍정적인 뒤돌아보기 어설션을 사용할 수 있으며 더 쉽습니다.

perl -pi -e 's/(?<=^\$VIP_IP=).*/192.17.200.100/' your_file

그렇지 않으면 다음을 사용하여 대체 텍스트에 일치하는 키를 포함해야 합니다 $1.

perl -pi -e 's/(^\$VIP_IP\s*=).*/$1192.17.200.100/' your_file

관련 정보