比较两个模式文件时忽略所有带有 diff 的 pgsql 注释

Ignoring all pgsql comments with diff while comparing two schema files

比较两个 sql 转储文件时忽略所有 pgsql 注释的正确 diff 命令语法是什么,包括单行 '--' 和多行 '/**/' ?

我已经试过了,但没用。

diff -b -I '^(--C|/*| *)' schema1.sql schema2.sql

使用 awk 格式化数据并重定向到 diff:

diff <(awk '!/^--/ && blnk!=1 && !/^\/\*/ { print [=10=] } /^\/\*/ { blnk=1 } /^\*\// { blnk=0 } ' schema1.sql) <(awk '!/^--/ && blnk!=1 && !/^\/\*/ { print [=10=] } /^\/\*/ { blnk=1 } /^\*\// { blnk=0 } ' schema2.sql)

使用 awk,如果遇到以 */ 开头的行,我们将标记值 blnk 设置为 1,然后在遇到以 */ 开头的行时将其设置为 0 然后当一行不以 a 开头时-- 并且 blnk 不是 1,我们打印该行。 schema1.sql 和 schema2.sql 都在输出重定向回差异比较之前完成。