我正在尝试编写一个shell脚本,在启动时在配置文件中进行搜索和替换.
我们要替换的字符串是:
include /etc/nginx/https.include;
Run Code Online (Sandbox Code Playgroud)
我们想用评论版替换它:
#include /etc/nginx/https.include;
Run Code Online (Sandbox Code Playgroud)
包含我们要替换的字符串的文件是:
/etc/nginx/app-servers.include
Run Code Online (Sandbox Code Playgroud)
我不是Linux大师,似乎无法找到执行此操作的命令.
perl -p -i -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
Run Code Online (Sandbox Code Playgroud)
如果该行可能没有结束;,请使用:
perl -p -i -e 's%^(include /etc/nginx/https.include;.*)$%#$1%' /etc/nginx/ap-servers.include
Run Code Online (Sandbox Code Playgroud)
如果要保留原始文件,请在以下位置后添加备份扩展名-i:
perl -p -i.bak -e 's%^(include /etc/nginx/https.include;)$%#$1%' /etc/nginx/ap-servers.include
Run Code Online (Sandbox Code Playgroud)
现在,解释.该-p标志意味着就地更换.文件的所有行都将被送入表达式,结果将用作替换.该-i标志表示备份文件的扩展名.通过无任何使用它,您可以防止生成备份.该-e告诉Perl得到以下参数为将被执行的表达式.
现在,表达是s%something%other%.我使用%而不是更传统/的避免不得不逃避路径的斜线.我在表达式和$1替换表达式中使用括号表示安全性 - 如果更改一个,则另一个将遵循.因此,%#$1%实际上是第二%的s,其次是期望的#,$1表示括号内的图案,最后%的s.
HTH.手.
| 归档时间: |
|
| 查看次数: |
875 次 |
| 最近记录: |