2010年8月8日日曜日

ARGV = AWK起動時に指定した入力ファイル名とコマンド名 - AWK

AWKの入出力関数とコマンド実行機能
AWKのパターンと制御文
△Gawk on Windows △Gawk △mawk32 ○Mawk ○awk
配列です。AWK起動時に指定した、入力ファイル名とコマンド名が入っています。

o 読み込み予定のファイル名を変更する事が出来ます。
o 読み込み予定のファイル増減については、「ARGC = ARGVに入っている要素の個数」の操作が必要です。


**** 書式
--------
ARGV[ 数字 ]
もしくは
ARGV[ 数字 ] = "読み込ませたいファイル名"
--------

o ARGVは変数です。
   + 配列ですので、数字を入れる時「[」や「]」は省略出来ません。
o 数字 = 0の時、コマンド名(注記あり)。1以上かつARGC未満の時、AWK起動時に指定した入力ファイル名
   + 但し、次の処理系では、コマンド名を正しく渡さない事があります。
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6
   + mawk32 1.3.3
o 読み込ませたいファイル名 -- まだ読み込んでいないファイルについては、読み込むファイルを変更する事が出来ます。


**** 使用例
--------
BEGIN {
  print "実行コマンド名(多分) = [" ARGV[0] "]";
  for (i = 1; i < ARGC; ++i) {
    print "入力ファイルその" i " = [" ARGV[i] "]";
  }
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o ARGV[0]には、コマンド名相当の値が入っています。内容は、処理系によって異なります。
o ARGV[1] から ARGV[ARGC - 1]までは、AWK実行時に指定した、入力ファイル名が入っています。
o 要素の個数は、変数ARGC に入っています。
o 変数ARGC と一緒に使う事で、入力ファイルを動的に追加、削除する事が出来ます。
   + ARGCを使うと、入力ファイルの読み込み個数を変更できます。+1して指定します。
   + ARGVを使うと、入力ファイル名を変更出来ます。但し、入力ファイル名変更で、現在読み込み中のファイルを切り替える事は出来ません。

** 処理系に依存する動作
o ARGV[0]に設定するコマンド名は、処理系によって、渡し方が異なります。
o 指定された通りコマンド名を設定する処理系
   + Mawk for Windows 1.3.3
   + original = the one true awk(updated May 1, 2007)
o コマンド名として、拡張子を除いたファイル名のみ渡そうとする処理系(最後の「\」の直後から「.」の手前まで)
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6
   + これらの処理系は、ファイル名に2つ以上「.」が含まれていると、正しく切り出しません。
o 設定するコマンド名が、固定の処理系
   + mawk32 1.3.3 -- 「mawk」固定みたいです。
o もしかすると、UNIX版Gawkや、Gawkの古いバージョンでは、動きが異なるかもしれません。
   + The GNU Awk User's Guide の「6.5.3 Using ARGC and ARGV」によると、「ARGVには、一部のコマンドラインオプションも入っています。」との事でした。


**** メモ
o C言語の argvと違って、指定したオプション全てを取得する事は出来ません。


**** 確認した処理系
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の入出力関数とコマンド実行機能▼ABC順
    ▼AWKのパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > OFS = printを使って書き出す時の列区切り文字
    ORS = printを使って書き出す時の改行文字
    > ARGIND = ARGVにおける現在入力中ファイルの位置(Gawk専用)
    ENVIRON = 環境変数。読み取り専用
    +
    ARGC = ARGVに入っている要素の個数

2010年8月7日土曜日

ARGC = ARGVに入っている要素の個数 - AWK

AWKのパターンと制御文
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○(注記あり)awk
配列 ARGVに入っている要素の個数です。
o この値を減らす事で、読み込み予定のファイルを読み込まない事も出来ます。
o 入力ファイルを増やす時は、この値を増やすと共に、配列ARGVにファイル名を登録します。

**** 書式
--------
ARGC
もしくは
ARGC = 読み込ませたいファイルの数+1
--------

o ARGCは変数です。
o 読み込ませたいファイルの数+1 -- 入力ファイルの数を調節する事が出来ます。
   + これまでに読み込んだファイルの数も数えます。


**** 使用例
--------
BEGIN {
  print "AWK実行時に指定した、入力ファイルの一覧";
  for (i = 1; i < ARGC; ++i) {
    print "入力ファイルその" i " = [" ARGV[i] "]";
  }

  print "入力ファイルを削減する時";
  if (ARGC > 1) {
    --ARGC;
  }
  print "入力ファイルを追加する時";
  ARGV[ARGC++] = "ミクさん語録.txt";

  # 上の文は、ARGV[ARGC] = "ミクさん語録.txt"; ++ARGC; と書く事も出来ます。
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 配列 ARGVに入っている要素の個数です。
o AWKを起動する時に指定した入力ファイルの数に、1を足したものが入っています。
o この値を増やす事で、入力ファイルを動的に追加する事が出来ます。
   + 同時に、配列 ARGVの最後に入力ファイルを追加します。
o この値を減らす事で、入力ファイルを動的に減らす事も出来ます。


** 処理系に依存する動作
o もしかすると、UNIX版Gawkや、Gawkの古いバージョンでは、動きが異なるかもしれません。
   + The GNU Awk User's Guide の「6.5.3 Using ARGC and ARGV」によると、「ARGVには、一部のコマンドラインオプションも入っています。」との事でした。
o ARGCの値を、現在読み込み中の位置以下に設定した時、動作は処理系によって異なります。
   + 次の処理系では、この値を変更すると直ぐに反映されて、ファイル読み込みを終了します。
      + original = the one true awk(updated May 1, 2007)
   + その他の処理系では、現在の入力ファイルの読み込みが終了してから、ARGCの値を確認 = ファイル読み込み終了します。


**** メモ
o C言語の argcと違って、コマンド実行時に指定した引数を、全部取得する事は出来ません。


**** 確認した処理系
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のパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > ARGV = AWK起動時に指定した入力ファイル名とコマンド名
    ARGIND = ARGVにおける現在入力中ファイルの位置(Gawk専用)
    ENVIRON = 環境変数。読み取り専用

ENVIRON = 環境変数。読み取り専用 - AWK

AWKのパターンと制御文
○(注記あり)Gawk on Windows ○(注記あり)Gawk ○mawk32 ○Mawk ○awk
環境変数です。読み取り専用です。

**** 書式
--------
ENVIRON[ "環境変数の名前" ]
--------

o 環境変数の名前 -- 配列の添え字の形で指定します。
   + 例。 ENVIRON["COMPUTERNAME"]


**** 使用例
--------
BEGIN {
  print "環境変数を全て取得します。";
  for (i in ENVIRON) {
    print "ENVIRON[" i "] = [" ENVIRON[i] "]";
    ++count;
  }
  print "環境変数の数 = " count;
}
--------

o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。


**** 機能
o 環境変数が入っている変数です。
o 配列になっていますので、環境変数名を添え字にして、取り出します。
o ENVIRONの内容を変更しても、環境変数は変わりません。

** 処理系に依存する動作
o Gawk系では、環境変数 AWKPATHを追加します。
   + Gawk on Windows 3.1.7
   + Gawk for Windows 3.1.6


**** 確認した処理系
o Gawk on Windows 3.1.7 -- 環境変数 AWKPATHを追加
o Gawk for Windows 3.1.6 -- 環境変数 AWKPATHを追加
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のパターンと制御文▼ABC順
    ▼AWKプログラムを書く▼ABC順
    ▼AWK
    ▼制作メモ
    > PROCINFO = AWKのプロセスに関する情報。プロセスIDなど(Gawk専用)
    AWKPATH = コマンドでAWKファイル名を指定する時、ファイルの場所を省略する(Gawk, mawk32専用)
    +
    ARGV = AWK起動時に指定した入力ファイル名とコマンド名