You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编写Sed命令删除含带/不带双引号postgres的ROLE行

编写sed命令实现指定行删除

原始输入

CREATE ROLE "postgres";
ALTER ROLE "postgres" WITH  INHERIT;
CREATE ROLE postgres;
ALTER ROLE postgres WITH  INHERIT;
CREATE ROLE "postgres-123";
ALTER ROLE "postgres-123" WITH  INHERIT;

期望输出

CREATE ROLE "postgres-123";
ALTER ROLE "postgres-123" WITH  INHERIT;

需求说明

需要一条sed命令实现原地编辑文件,删除所有包含ROLE postgres的行(其中postgres可以带双引号或不带双引号)。已知命令sed -i -E "/ROLE postgres\\b/d" file_name仅能删除postgres不带双引号的行,无法处理带双引号的情况。

解决方案

使用如下sed命令即可实现需求:

sed -i -E '/ROLE "?postgres"?\b/d' file_name

命令解释

  • -i:开启原地编辑模式,直接修改目标文件
  • -E:启用扩展正则表达式语法,简化正则写法
  • 正则表达式ROLE "?postgres"?\b:
    • "?":匹配0个或1个双引号,同时兼容带双引号和不带双引号的postgres
    • \b:单词边界,确保仅匹配完整的postgres单词,避免误删postgres-123这类包含postgres前缀的行
    • d:删除匹配到的行

内容的提问来源于stack exchange,提问作者armchair

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 17:52:14