2015-09-02 34 views
0

我有一個非常大的SQL文件,並希望從文件中提取一個創建語句。我使用的命令是;從一個SQL文件grep一句話

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

這種方法的問題是,statemtn分散在多行,grep只返回第一行。如何繼續grep,直到它到達表示語句結束的分號?

回答

1

首先,你的命令有一個「貓無用的用法」,下一次只是做grep '...' filecat file|grep...

的grep做線明智的檢查。您可以使用awk來實現,很容易:

awk -v RS=';' '/CREATE TABLE site_summaries/' foo.sql 

做了一個小測試:

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