방금 bash 스크립트를 사용하여 php.ini 파일의 설정을 바꾸려고 했습니다.
내 상황은 다음과 같습니다.
매우 구체적인 설정이 있으며 기본값은 다음과 같습니다.
;date.timezone =
이제 나는 그것을 다음으로 바꾸려고 노력합니다 sed
.
date.timezone = "America/Mexico_City"
내가 사용하려는 명령은 다음과 같습니다.
sed -i '/^;date\.timezone[[:space:]]=.*$/date.timezone = "America/Mexico_City"' php.ini
하지만 나는 그것을 이해합니다:
sed: -e expression #1, char 35: extra characters after command
이유는 잘 모르겠지만 문자 하나만 남겨두면 작동합니다(예상한 방식은 아니지만 오류를 반환하지 않습니다). 예:
sed -i '/^;date\.timezone[[:space:]]=.*$/d' php.ini
이것은 단지 줄을 제거합니다;date.timezone =
저는 sed를 처음 접했고 도움을 주시면 정말 감사하겠습니다.
감사해요
답변1
당신은 노력하고 있습니다에스s
한 패턴을 다른 패턴으로 바꾸려면 다음 형식의 sed 명령을 사용해야 합니다.
's/pattern/replacement/'
또한 패턴을 이스케이프 /
하거나 문자열의 모든 문자를 바꿔야 합니다(귀하의 경우 "America\/Mexico_City"
). 그래서
sed 's/^;date\.timezone[[:space:]]=.*$/date.timezone = "America\/Mexico_City"/'
또는 구분 기호를 다른 패턴으로 대체하여 슬래시를 이스케이프하는 것을 방지할 수 있습니다 s#pattern#replacement#
.
sed 's#^;date\.timezone[[:space:]]=.*$#date.timezone = "America/Mexico_City"#'