从SQL文件中查找句子

时间:2015-09-02 16:29:56

标签: sql ubuntu grep

我有一个非常大的SQL文件,想要从文件中提取单个create语句。我使用的命令是;

cat dbdump.sql |grep "CREATE TABLE site_summaries" >newdump.sql

这种方法的问题在于,statemtn分布在多行上,而grep只返回第一行。如何继续grep直到它到达表示语句结束的分号?

1 个答案:

答案 0 :(得分:1)

首先,你的命令对cat"有无用的用法,下次只做cat file|grep...而不是awk -v RS=';' '/CREATE TABLE site_summaries/' foo.sql

grep执行直线检查。您可以使用awk轻松实现:

kent$  cat f
foo
bar;
this that;
CREATE TABLE site_summaries
whatever
else you need;
trash here....;

kent$  awk -v RS=';' '/CREATE TABLE site_summaries/' f

CREATE TABLE site_summaries
whatever
else you need

做了一点测试:

;

如果您希望awk -v RS=';' -v ORS=";\n" '/CREATE TABLE site_summaries/' file 仍在提取文本的末尾,请选择以下内容:

SELECT TO_DATE(SYSDATE, 'DD/MON/YYYY')FROM DUAL;
TO_DATE(SYSDATE,'DD/MON/YYYY')
------------------------------
02-SEP-15