我有一个非常大的SQL文件,想要从文件中提取单个create语句。我使用的命令是;
cat dbdump.sql |grep "CREATE TABLE site_summaries" >newdump.sql
这种方法的问题在于,statemtn分布在多行上,而grep只返回第一行。如何继续grep直到它到达表示语句结束的分号?
答案 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