2017-07-31 16 views
1

すべてのファイルを1つのファイルにダンプしようとしています。このために私は、このawkスクリプト(reading.awk)複数のファイルを1つに追加する(awk)

BEGIN { 

RS = "\n" 
filename= "DDL_dump.sql" 
flag=1; 
} 

{ 
    record =$0 
    if(record == ") ;") 
     flag = 0; 
    else if(flag==1) 
     print record >> filename 

} 

END { 
close(filename) 
} 

しかし、それは上書きする代わりに追加されたすべてのファイルのために使用していました。

これはファイルと同じフォルダ内のbatファイルから実行しようとしています。

FOR %%i IN (*.sql) DO awk -f reading.awk %%i 
+0

エラーにDDL_dump.sqlawkコマンドの出力を格納するシェル出力のリダイレクトですサンプルデータがないのでコードを試していないので、それが原因であるかどうかはわかりません。 –

+0

助けてくれなかった! – codebee

+1

@codebee:これをどのように実行しようとしているのかを教えてください – Guru

答えて

1

あなたは(シェルループなし)これが欲しいように見える:複数行形式で

awk 'FNR==1{f=1} /\) ;/{f=0} f' *.sql > 'DDL_dump.sql' 

説明:

# True for the first line of each file 
FNR==1 { 
    f=1 # Set f(lag) 
} 

# Once the pattern occurs ... 
/\) ;/ { 
    f=0 # ... reset the (f)lag 
} 

# As long as the f(lag) is true, print the line. 
f 

*.sql 

は、そのシェルのグロブ表現であります現在のフォルダ内のすべての.sqlファイルに展開され、pそれらを引数としてawkに入れてください。私は「`...`印刷$レコード... ``である必要があり、印刷レコード:

> 'DDL_dump.sql' 

+0

ありがとう!それは働いた:) – codebee

+0

それが助けてくれたことを喜んで。 – hek2mgl

関連する問題