AWKの入力ファイルを、AWKプログラムの中で追加、削除(= キャンセル)する方法 - AWK
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
AWKの入力ファイルは、AWKプログラムの中で追加、変更、削除(= キャンセル)する事が出来ます。変数 ARGC と ARGV を使います。
**** 手順
o 3つの手順について纏めました。
+ 1. 入力ファイルを後で追加する方法
+ 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
+ (この手順を応用すると、入力予定のファイル名を変更する事も出来ます。)
+ 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法
o 1. 入力ファイルを後で追加する方法
+ 次の書き方が便利です。「 ARGV[ARGC++] = "ファイル名" 」
+ ARGV[ARGC] に追加したいファイル名を入れた後に、ARGC に 1 を加えます。
--------
BEGIN {
ARGV[ARGC++] = "ネギパーティ参加者.txt";
ARGV[ARGC++] = "ネギパーティ参加者その2.txt";
}
{
print "参加者 :" $1 "さん";
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
o 2. 読み込み予定の入力ファイルを削除(= キャンセル)する方法
+ 次のように書きます。「 ARGV[消したいファイルの順番] = "" 」
--------
BEGIN {
ARGV[1] = ""; # 最初に読み込むファイルをスキップします。
}
{
print "参加者 :" $1 "さん";
}
--------
+ ARGV[1] に別のファイル名を指定すると、AWKは指定したファイルを読み込みます。
o 3. 後ろに続く入力ファイルをまとめて削除(= キャンセル)する方法
+ 次の書き方が便利です。「 ARGC = (合計ファイル数 + 1) 」
--------
BEGIN {
ARGC = 2; # ファイルを最初の1つだけ読み込みます。
}
{
print "参加者 :" $1 "さん";
}
--------
+ この他に、2番目の方法を使って、ARGV のファイル名を1つずつ消す方法もあります。
o 詳しい情報はこちらです。
+ ARGC = ARGVに入っている要素の個数
+ ARGV = AWK起動時に指定した入力ファイル名とコマンド名
+ ARGIND = ARGVにおける現在入力中ファイルの位置 (Gawk専用)
**** メモ
o BEGIN だけでなく、ファイル読み込み中に変更する事が出来ます。
+ 読み込み中のファイルを削除した時の動作は、処理系によって異なります。
+ 詳しくは、「ARGC = ARGVに入っている要素の個数」
o 現在のファイルの位置を調べたい時は、変数 ARGINV のメモ「ARGIND = ARGVにおける現在入力中ファイルの位置」(Gawk専用)をどうぞ。
+ この変数は Gawk限定ですが、メモ欄に、mawkなどでも動かす為の情報を載せました。
**** 確認した処理系
o Gawk on Windows 3.1.7
o Gawk for Windows 3.1.6
o mawk MBCS (32bit版) 1.3.3
o Mawk for Windows 1.3.3
o original = the one true awk(updated May 1, 2007)
==
関連ページ:
▼AWKプログラムを動かす
▼AWKのパターンと制御文(▼ABC順)
▼AWKプログラムを書く(▼ABC順)
▼AWK
▼制作メモ
> 入力ファイルを手入力する
AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
BEGIN = 最初に実行する