$0 = 最後に読み込んだデータ、1行分 - AWK
○Gawk on Windows ○Gawk ○mawk32 ○Mawk ○awk
最後に読み込んだデータ、1行分です。o 入出力や $0 の直接操作の他に、文字列操作関数が暗黙で使う場合があります。(gsub, sub, gensub)
**** 書式
--------
$0
もしくは
$0 = 設定したい値
--------
o $0は変数です。値を代入する事も出来ます。
o 設定したい値 -- 文字列です。配列を指定する事は出来ません。
+ 数値を指定すると、文字列に変換されます。
+ この時の変換規則は、"%.6g"固定みたいです。(変数 CONVFMTや OFMTの値は、参照しません。)
+ 内部的には数値としての値も持っていますが、文字列として表示されます。
**** 使用例
--------
{
print $0; # 現在の入力データ。1行分が入っています。
}
END {
print $0; # 最後に入力したデータが、残っています。
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o 最後に読み込んだデータ、1行分が入っています。
o 改行文字は入っていません。
+ 改行文字は変更する事が出来ます。変数 RSを使います。
o この変数に値を代入すると、変数 $1、$2などや、変数 NFにも自動反映されます。
+ 代入した値は、列に分割されて、変数 $1などに自動反映されます。列の区切り文字には、変数 FSを使います。
+ また、変数 NFには、$1などに分割した数が入ります。
o 次の操作は、$0の値を変更します。
+ getlineを、引数無しで呼び出した時
+ gsub, sub, gensubを、対象文字列の指定無しで(もしくは$0を指定して)呼び出した時
+ $1など変数「$ + 数字」に値を代入した時
+ この時、各列の間にある区切り文字を、OFSの値で置き換えます。
+ $1 = $1のように同じ値を代入しても、同じ動きをします。
+ $0の値を直接上書きした時
+ 変数 NFに値を代入した時の動作は、処理系によって異なります。
** 処理系に依存するかもしれない動作
o UTF-8のファイルを読み込む時、1行目の$0と$1に、UNICODE特有の見えない文字(BOM)が入っている事があります。
+ この場合、見えない文字の入った値を1行目の先頭以外で書き出すと、文字化けします。
+ (例。Windows XP (SP3)のメモ帳で作成し、文字コード UTF-8で保存した時)
+ 対策方法は「UTF-8のファイルから、BOMを除去する方法」
** 処理系に依存する動作
o 変数 NFに値を代入した時、$0の値を自動変更(= 再構築)する処理系
+ Gawk on Windows 3.1.7
+ Gawk for Windows 3.1.6
+ mawk MBCS (32bit版) 1.3.3
+ Mawk for Windows 1.3.3
+ この時、各列の間にある区切り文字を、変数OFSの値で置き換えます。
+ NF = NFのように同じ値を代入しても、同じ動きをします。
+ これらの処理系では、NFを負の値にすると、強制終了します。
o 変数 NFに値を代入した時、$0の値を変更しない処理系
+ original = the one true awk(updated May 1, 2007)
+ この処理系では、NFの値が負になっても、$0の値を参照する事が出来ます。
**** メモ
o $0 に実数を入れた時、CONVFMTの値が効きませんが、判定は○にしました。
o 理由は、AWKの仕様上、$0に実数を1つだけ入れるような使い方は、考え難いからです。
**** 確認した処理系
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順)
▼制作メモ
> RSTART = match関数で見つけた文字列の先頭位置
RLENGTH = match関数で見つけた文字列の長さ
> $1 = 最後に読み込んだデータの1列目
NF = 最後に読み込んだ行の列数
+
ファイルからデータを読み込む
NR = これまでに読み込んだ行数
FNR = 現在読み込み中のファイルから読み込んだ行数
(2011年2月13日追加。gensubも暗黙使用)
(2010年9月9日追加。変数NFに代入した時の影響)
(2010年9月3日追加。実数を代入した時の動作)