使用 SSH 传输时更改文件中的特定行

Max*_*kyi 3 ssh

我正在使用scp命令将我的项目部署到生产服务器。作为部署过程的一部分,我将.htaccess文件上传到服务器。在本地,环境设置为DEVELOPMENT

#Set environment
#[PRODUCTION, STAGING, TESTING, DEVELOPMENT] 

SetEnv KOHANA_ENV 'DEVELOPMENT'
Run Code Online (Sandbox Code Playgroud)

但是,上传到服务器时需要将其更改为PRODUCTION. 有什么办法可以用 ssh 实现吗?

cha*_*aos 7

您可以使用sed命令和-i标志来就地编辑文件:

sed -i "s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g" /path/to/.htaccess
Run Code Online (Sandbox Code Playgroud)

通过ssh我看起来像这样:

ssh user@host "sed -i \"s/SetEnv KOHANA_ENV 'DEVELOPMENT'/SetEnv KOHANA_ENV 'PRODUCTION'/g\" /path/to/.htaccess"
Run Code Online (Sandbox Code Playgroud)

使用sed替换文件中的字符串非常简单:

sed -i 's/search_string/replace_string/g' file
Run Code Online (Sandbox Code Playgroud)

替换出现的所有search_stringreplace_string的给予file-i导致sed就地编辑文件,而不是写入标准输出 (stdout)。

如果您只想替换第一次出现,请使用此 sed 命令:

sed -i '0,/search_string/s/search_string/replace_string/' file
Run Code Online (Sandbox Code Playgroud)

有关sed使用的更多信息man sed