awkを使用してファイルを繰り返す方法

awkを使用してファイルを繰り返す方法

kshスクリプトでこのコマンドを使用して、sed -e '/^*/d' $WORKFILE | awk -f test.awk >> $OUTPUTFILE 次のように274567行のファイルをインポートします。

*
*
*
*
*
 syopsf00
         a0000096
                 782            1
         CAStmtInv
 syopsf00
         a0000096
                 782            1
         USStmtInv
 syopsf00
         a0000096
                 606            1
         CAStmtInv
 syopsf00
         a0000096
                 606            1
         USStmtInv
 syopsf00
         a0000096
               23472            4
         AO
 syopsf00
         a0000096
               23472            4
         Dealer
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

次の行を含むファイルを生成します。

syopsf00 a0000096 782 1 CAStmtInv
syopsf00 a0000096 782 1 USStmtInv
syopsf00 a0000096 606 1 CAStmtInv
syopsf00 a0000096 606 1 USStmtInv

しかし、私が得るもの

syopsf00 a0000096 782 1 CAStmtInv

awkスクリプト(test.awk)は次のとおりです。

BEGIN {
         RS="\n\n";
         FS=" ";

}
END {
         print $1,$2,$3,$4,$5;
}

ベストアンサー1

正確に何をしようとしているのか(入力に応じて)完全には明確ではありませんが、出力の問題はENDステートメントに印刷を入れるため、awkに供給された最後の行だけが印刷されることです。

次のようにする必要があります。

BEGIN { 
  RS="\n\n"; FS=" ";
}
{ 
  print $1,$2,$3,$4,$5; 
}

注:インデントは私の個人的な好みです。

おすすめ記事