Shammer's Philosophy

My private adversaria

AWKからのファイル書き出し

[AWK]AWKからのファイル書き出し
AWK NR Sample Script - Shammerismでは、選択対象を標準出力に書き出ししたが、これを特定のファイルに書き出したい。方法はいくつか考えられるが、最もシンプルなのは

$ ./awk-script.awk somefile.txt > newfile.txt
$

というように、出力結果全体をリダイレクトする方法。何度も標準出力に表示される結果を見て、それを加工して、また表示結果を見て、、、とこれを繰り返して、最終的に希望する形になったら最後にこの形で実行すればよい、という寸法だが。これはこれでできるけれども、自分がイメージしているのとは違う。そして、これの欠点は一度の実行で一つのファイルにしか保存できないことだ。何らかの複数の情報が集まった巨大なテキストファイルを項目ごとに別々のファイルに保存する、という用途ではこのやり方は使えない。
これを可能にするのは、保存対象となったものを一行ずつ保存していくやり方だ。以下のようにprintやprintfをリダイレクトすればいい。

#!/usr/bin/awk -f
{
    for(i=6;i<=NF;i++){
	printf "%s ", $i >> "new.txt";
    }
    printf "\n" >> "new.txt";
}

この例では同じファイルに保存したが、リダイレクト先を別々のファイルにすることで別のファイルに保存することもできる。