uniq 和 agrep 的组合?

uniq 和 agrep 的组合?

我有一个充满长 SQL 查询的文件,每行一个。我需要创建一个唯一查询的列表,但大多数查询都包含参数值,这使得使用精确匹配工具变得uniq不可能。有没有办法“模糊地”找到独特的线条,例如agrep

答案1

如果查询足够可预测,也许您可​​以简单地sed输出参数值——例如,如果许多查询包含与数字的相等比较,sed 's/=[[:digit:]]+//g'则将删除所有实际数字,只留下列名称。

否则,我能想到的唯一真正通用的解决方案是模式识别技术,例如k- 最近的邻居,它可以根据相似性将任意字符串列表分类为簇。

答案2

您可能会幸运地通过 EXPLAIN ANALYZE 运行每个查询并在查询计划中找到唯一的结果。

相关内容