gpt4 book ai didi

regex - 使用 grep 捕获组正则表达式

转载 作者:行者123 更新时间:2023-12-05 00:43:13 24 4
gpt4 key购买 nike

我正在尝试从如下所示的 PostgreSQL 模式转储中捕获 SQL DDL“CREATE”:

SET default_table_access_method = heap;

CREATE TABLE schema_name.table_name (
col1 bigint,
col2 text
);

ALTER TABLE schema_name.table_name OWNER TO user;

CREATE INDEX index ON schema_name.table_name USING btree (col1);

我想要的是:

CREATE TABLE schema_name.table_name (
col1 bigint,
col2 text
);`

为什么 grep -Po "(CREATE TABLE)[\S\s]*(;)"dump.sql 不起作用?

在 PCRE2 /CREATE TABLE [\w]*\.[\w]*[\S\s]*(;)/U 中匹配正确。

谢谢。

最佳答案

sed 会是更好的工具:

sed -n '/^CREATE TABLE/,/;$/p' file.sql

CREATE TABLE schema_name.table_name (
col1 bigint,
col2 text
);

如果您真的想要 gnu-grep 解决方案,请使用:

grep -zPo "(?m)^CREATE TABLE[^;]+;\R" file.sql

CREATE TABLE schema_name.table_name (
col1 bigint,
col2 text
);

关于regex - 使用 grep 捕获组正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70619735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com