1

awk を使用して、より多くの入力ファイルを読みたいと思います。フォルダ内の ftp_dst_ で始まるすべてのファイルで、この小さな awk スクリプトを実行したいと考えています。

for i in ftp_dst_*; 
    do

gawk -v a="$a" -v b="$b" -v fa="$fa" -v fb="$fb" -v max="$max" '
BEGIN{
        FS=" ";
        OFS="\t";
    }
    {
        if ($8 == "nrecvdatabytes_")
        {
                b=a;
                a=$1;           

                if (b!=0)
                {               
                fa=a-b; 
                    if (fa>max && fa!=0)
                    {
                        max=fa;
                    }   
                }           
        }   
    }
    END{
        print "lol";
        #print flowid, max;
    }
'./ftp_dst_*
done

これで、ftp_dst_5、ftp_dst_6、ftp_dst_7 がフォルダにあるので、コマンド ラインで lol を使用して 3 行を取得する必要があります。もちろん、この "print lol" は試しにすぎません。3 つのファイルから 3 つの値を取得したいと考えています。では、awk を使用してこれらすべてのファイルを読み取るにはどうすればよいでしょうか。

4

1 に答える 1

0

引数にグロブを使用すると、すべてのファイルが 1 つのファイルであるかのようにまとめられます。シェルforループがなければ、一度だけ出力が得られます。forループがあるので、出力を 3 回取得する必要があります。問題の一部は、単一引用符の後にスペースが必要な場合や、"$i"各ファイルを個別に考慮したい場合は、Karl Nordström が提案したように引数を変更する必要がある場合があります。

于 2012-07-09T14:00:59.923 に答える