我的 postgres 转储 ( pg_dump > file.sql
) 包含我要删除的数据。是否有一个简单的正则表达式(或 sed/awk 命令)来删除特定COPY table_name
语句和终止词(“。”)之间的所有行。我知道正则表达式对于不匹配和多行模式并不理想,但我还是尝试了这些(在崇高的查找/替换中):
"COPY ((?!\\[.])*.*)*"
"COPY ((?!\\[.]$)*(.[\n])*)*"
"COPY (?!\\[.]$)(.*[\n]*)*"
我能得到的最接近的是匹配复制语句之后的第一行数据:
"COPY (?!\\[.]$).*[\n]+.*[\n]+"