【发布时间】:2017-12-14 12:01:00
【问题描述】:
在追求自动化的过程中,我试图在某些代码中注释和注释。请注意,这是脚本的一部分,因此我试图隔离具有 #ssl_system
的特定行之前
#return 301 https://$server_name$request_uri; #ssl_system
#} #ssl_system
#server { #ssl_system
# SSL configuration
#listen 443 ssl; #ssl_system
#listen [::]:443 ssl; #ssl_system
expires $expires;
#include snippets/ssl-newdomain.com.conf; #ssl_system
#include snippets/ssl-params.conf; #ssl_system
之后
return 301 https://$server_name$request_uri; #ssl_system
} #ssl_system
server { #ssl_system
# SSL configuration
listen 443 ssl; #ssl_system
listen [::]:443 ssl; #ssl_system
expires $expires;
include snippets/ssl-newdomain.com.conf; #ssl_system
include snippets/ssl-params.conf; #ssl_system
实际上它是一种启用和禁用 SSL 的方法。
我正在尝试使用 SED:
这行得通:
sudo sed -i -e "s|#server_name newdomain.com www.newdomain.com; #ssl_system|server_name newdomain.com www.newdomain.com; #ssl_system|g" "/var/www/srv/templates/nginx.tpl"
这不是:
sudo sed -i "s|#return 301 https://$server_name$request_uri; #ssl_system|return 301 https://$server_name$request_uri; #ssl_system|g" "/var/www/srv/templates/nginx.tpl"
我想要一组启用 SSL 的命令,以及另一组禁用它的命令。
我不太确定自己做错了什么,但是任何见解都会很棒。
更新
成功了
sudo sed -i "s|#return 301 https://[$]server_name[$]request_uri; #ssl_system|return 301 https://[$]server_name[$]request_uri; #ssl_system|g" "/var/www/srv/templates/nginx.tpl"
【问题讨论】:
-
$匹配行尾。如果您想匹配文字美元符号,那就是\$或[$]。您的示例数据不包含这些正则表达式中的任何一个的匹配项,因此很难确切地说这是否是完整的修复。 -
@tripleee
sudo sed -i "s|#return 301 https://[$]server_name[$]request_uri; #ssl_system|return 301 https://[$]server_name[$]request_uri; #ssl_system|g" "/var/www/srv/templates/nginx.tpl"工作。