0
我有一個非常大的SQL文件,並希望從文件中提取一個創建語句。我使用的命令是;從一個SQL文件grep一句話
cat dbdump.sql |grep "CREATE TABLE site_summaries" >newdump.sql
這種方法的問題是,statemtn分散在多行,grep只返回第一行。如何繼續grep,直到它到達表示語句結束的分號?
我有一個非常大的SQL文件,並希望從文件中提取一個創建語句。我使用的命令是;從一個SQL文件grep一句話
cat dbdump.sql |grep "CREATE TABLE site_summaries" >newdump.sql
這種方法的問題是,statemtn分散在多行,grep只返回第一行。如何繼續grep,直到它到達表示語句結束的分號?
首先,你的命令有一個「貓無用的用法」,下一次只是做grep '...' file
不cat 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