regex 删除包含ROLE {rolename}的所有行

a0x5cqrl  于 2023-10-22  发布在  其他
关注(0)|答案(2)|浏览(71)
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删除ROLE postgres行,但不删除postgres在双引号中的行。

ltskdhd1

ltskdhd11#

sed -i -r '/ROLE "? *postgres\b/d' filename
  • "? =可选双引号
  • * =任意数量的空格,包括0
  • postgress\b = postgres后跟字边界
kgqe7b3p

kgqe7b3p2#

$ sed -E '/ROLE (postgres|"postgres")/d' file
CREATE ROLE "postgres-123";
ALTER ROLE "postgres-123" WITH  INHERIT;

添加-i或其他你想在测试完成后更新的输入文件。
如果这不能达到你想要的效果,那么编辑你的问题,包括在你的示例输入/输出中不起作用的情况。

相关问题