mn.ftg.com
ambari-agent.ini
아래와 같이 파일에서 server_를 localhost로 바꿔야 합니다.
echo $machine
server_mn
echo $domain
ftg.com
more ambari-agent.ini
[server]
hostname=localhost
다음과 같이 점 앞에 백슬래시를 추가해야 합니까?
sed "s/hostname=localhost/hostname=$machine\.$domain/g" ambari-agent.ini
아니면 안전하게 수행하세요(백슬래시 없이).
sed "s/hostname=localhost/hostname=$machine.$domain/g" ambari-agent.ini
답변1
점은 정규식의 일부이고 리터럴 점과 일치해야 하는 경우에만 이스케이프해야 합니다. 리터럴 포인트를 정규 표현식과 일치시키려면 \.
또는 를 사용할 수 있습니다 [.]
.
s
그러나 표현식에서 대체 부분은 다음 sed
과 같습니다.아니요정규식.
백슬래시를 사용하여 이스케이프해야 하는 유일한 문자는 \
, &
, 개행 및 s
명령 구분 기호( /
사용된 경우 s/pattern/replacement/
)입니다.
이것은 당신의 명령을 의미합니다
sed "s/hostname=localhost/hostname=$machine.$domain/g" ambari-agent.ini
이는 관련된 변수의 값이 위의 규칙을 준수하는 한 작동합니다. 개인적으로 나는 또한 표현식을 줄의 시작 부분에 고정하고 명령 g
에서 플래그를 제거할 것입니다.s