我只是想使用 bash 脚本替换 php.ini 文件中的设置。
这是我的情况:
我有一个非常具体的设置,默认设置是:
;date.timezone =
Run Code Online (Sandbox Code Playgroud)
现在,我正在尝试将其替换sed为:
date.timezone = "America/Mexico_City"
Run Code Online (Sandbox Code Playgroud)
我尝试使用的命令是:
sed -i '/^;date\.timezone[[:space:]]=.*$/date.timezone = "America/Mexico_City"' php.ini
Run Code Online (Sandbox Code Playgroud)
但我明白了:
sed: -e expression #1, char 35: extra characters after command
Run Code Online (Sandbox Code Playgroud)
我真的不知道为什么,但如果我只留下一个字符,它就可以工作(不是预期的方式,但不会返回错误)。例子:
sed -i '/^;date\.timezone[[:space:]]=.*$/d' php.ini
Run Code Online (Sandbox Code Playgroud)
这只是删除了该行 ;date.timezone =
我对 sed 真的很陌生,我真的很感激任何帮助。
谢谢
您正在尝试小号另一个ubstitute一个模式,所以你需要使用sed的s命令,形式
's/pattern/replacement/'
Run Code Online (Sandbox Code Playgroud)
此外,您需要转义/模式或替换字符串中的任何字符(在您的情况下"America\/Mexico_City")。所以
sed 's/^;date\.timezone[[:space:]]=.*$/date.timezone = "America\/Mexico_City"/'
Run Code Online (Sandbox Code Playgroud)
或者,您可以通过使用不同的模式替换分隔符来避免转义斜杠,s#pattern#replacement#例如
sed 's#^;date\.timezone[[:space:]]=.*$#date.timezone = "America/Mexico_City"#'
Run Code Online (Sandbox Code Playgroud)