如何使用sed修改PostgreSQL的pg_hba.conf时跳过空格完成替换?
sed忽略空白匹配修改pg_hba.conf配置方案
你可以使用sed的正则空白匹配符实现忽略空格、制表符的匹配逻辑,不需要严格对齐原有配置的空格数量,同时还能保留原有行的缩进格式不被改动:
适用GNU sed(Linux发行版默认)
直接执行以下命令即可写入修改:
sed -i '/^local[[:space:]]\+all[[:space:]]\+all[[:space:]]\+peer[[:space:]]*$/s/peer[[:space:]]*$/trust/' pg_hba.conf
适用BSD sed(macOS默认)
macOS自带的sed需要给-i参数指定备份后缀,不需要备份可传入空字符串:
sed -i '' '/^local[[:space:]]\+all[[:space:]]\+all[[:space:]]\+peer[[:space:]]*$/s/peer[[:space:]]*$/trust/' pg_hba.conf
命令逻辑说明
- 先通过地址匹配规则筛选出唯一的目标行:匹配以
local开头,依次间隔任意数量空白字符后接两个all,末尾为peer(允许行尾带空白)的行,不会误匹配其他local开头的配置行 - 筛选到目标行后仅将末尾的
peer(含行尾空白)替换为trust,原有行的空格、制表符缩进完全保留 - 建议修改前先去掉
-i参数执行命令,打印输出确认替换结果符合预期后再添加-i参数写入文件
内容的提问来源于stack exchange,提问作者Furlings
相关产品推荐
相关产品推荐

