我正在搜索大量 SQL 脚本来查找数据依赖性,但由于脚本的变化,我遇到了一个有趣的问题。
如果我搜索单词FROM
,它只会返回该单词所在的行。因此,以下内容只会打印第一行和第三行,而我需要将第一行以及第三行和第四行一起打印。任何帮助,将不胜感激!
SELECT * FROM TABLE1
SELECT *
FROM
TABLE 2
答案1
SQL 语句通常以;
.
我们可以利用awk
这一事实来读取;
分隔记录并测试每条记录是否存在 sting FROM
。如果找到这样的记录,我们可以将所有连续空格压缩为单个空格,将所有换行符更改为单个空格,然后输出:
$ awk 'BEGIN { RS = ";" } /FROM/ { gsub("\n+| +", " "); print }' statements.sql
使用以下文件对此进行测试
SELECT * FROM TABLE1;
SELECT *
FROM
TABLE2;
结果是
SELECT * FROM TABLE1
SELECT * FROM TABLE2