2017-07-31 119 views
1

我想將所有文件轉儲到一個文件。爲此,我就是用這個awk腳本(reading.awk)追加多個文件到一個(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

錯誤:'$打印記錄...'應該是'打印記錄...'我我不確定這是否是原因,因爲我沒有嘗試代碼,因爲沒有樣本數據。 –

+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 

是一個shell水珠表達式擴展到當前文件夾中的所有.sql文件,並將p驢友們以awk作爲參數。

> 'DDL_dump.sql' 

是將在awk命令的輸出存入DDL_dump.sql外殼輸出重定向

+0

謝謝!它的工作:) – codebee

+0

很高興看到它的幫助。 – hek2mgl