将多个文件附加到一个(awk)

时间:2017-07-31 08:53:10

标签: awk

我正在尝试将所有文​​件转储到一个文件中。为此,我使用了这个awk脚本(reading.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

1 个答案:

答案 0 :(得分:1)

看起来你想要这个(没有shell循环):

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 glob表达式,它扩展为当前文件夹中的所有.sql文件,并将它们作为参数传递给awk

> 'DDL_dump.sql'

是shell输出重定向,它将awk命令的输出存储到 DDL_dump.sql