首页 > 解决方案 > 用 sed 注释掉/注释

问题描述

在我的 nginx 配置文件中,我有以下几行:

location / {
        try_files $uri $uri/ =404;
        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;
    }

现在,我想以编程方式注释掉/取消注释这两行:

        auth_basic "Restricted Content";
        auth_basic_user_file /etc/nginx/.htpasswd;

所以我想到sed并在这里找到了这篇文章: https ://stackoverflow.com/a/27355109

不幸的是,我无法让它工作。转义字符可能存在问题。有人可以帮忙吗?

标签: linuxsed

解决方案


要注释掉这些行,请使用命令

sed \
    -e 's|auth_basic "Restricted Content";|# \0|' \
    -e 's|auth_basic_user_file /etc/nginx/.htpasswd;|# \0|' \
    your_file

要取消注释,请使用:

sed \
    -e 's|# \(auth_basic "Restricted Content";\)|\1|' \
    -e 's|# \(auth_basic_user_file /etc/nginx/.htpasswd;\)|\1|' \
    your_file

推荐阅读