2010年6月29日火曜日

FNR = 現在読み込み中のファイルから読み込んだ行数 - AWK

AWKの入出力関数とコマンド実行機能
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
現在読み込み中のファイルから読み込んだ行数です。
o AWKプログラム内でファイルを指定して読み込んだ分は、行数に数えません。

**** 書式
--------
FNR
もしくは
FNR = 行番号
--------

o FNRは変数です。
o 行番号 -- 好きな数字を入れる事が出来ます。
   + 小数点以下のある値を入れると、Gawkは整数に丸めます。


**** 使用例
--------
{
  print "只今、ファイル「" FILENAME "」の " FNR "行目です。ミクさん。";
}
--------

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


**** 機能
o 現在読み込み中のファイルから読み込んだ行数です。
   + パターンに一致しない行も、読み込んでいたら数えます。
   + 途中でexitすると、exit以降読み飛ばした行は数えません。
o AWK実行時に入力ファイルを複数指定した時、現在読み込み中のファイルのみ数えます。
o getlineを使って読み込む場合
   + ファイルを指定せずに読み込んだ分は、行数に数えます。
   + ファイルを指定して読み込んだ分は、行数に数えません。
   + ファイル名に FILENAME (= 読み込み中のファイル名)を指定しても、行数に数えません。

** 処理系に依存する動作
o NR = 1.5 のように、小数点以下を持つ値を設定した場合
   + Gawkは整数に丸めます。この場合は、1になります。
   + mawkとoriginal-awkは、1.5のまま設定します。


**** メモ
o 複数ファイルを読み込んでいて、入力ファイルから読み込んだ行数の合計を知りたい時は、NRを使います。


**** 確認した処理系
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
    ▼制作メモ
    > NR = これまでに読み込んだ行数
    ERRNO = 入出力系の最新エラーメッセージ(Gawk専用)
    FS = 読み込んだ行を列に分割する時の区切り文字
    +
    NF = 最後に読み込んだ行の列数
    FILENAME = 現在読み込み中ファイルの名前
    $0 = 最後に読み込んだデータ、1行分
(2010年8月16日追加。手動更新した場合)