getline = ファイル(やパイプ)から1行読み込む - AWK
○Gawk on Windows ○Gawk ○mawk32 △(パイプ不可)Mawk ○awk
ファイル(やパイプ)から1行読み込みます。o 読み込んだ行の最後に、改行コードは入りません。
o 読み込み方法を変更したい時は、変数FSやRS辺りからどうぞ。
**** 書式
--------
getline [読み込み結果を入れる変数] [ < 入力ファイル名]
もしくは
入力コマンド文字列 | getline [読み込み結果を入れる変数]
Gawkの場合は
インターネット接続用文字列 |& getline [読み込み結果を入れる変数]
--------
(以下、書式の組み合わせ)
--------
getline
getline < 入力ファイル名
getline 読み込み結果を入れる変数
getline 読み込み結果を入れる変数 < 入力ファイル名
入力コマンド文字列 | getline
入力コマンド文字列 | getline 読み込み結果を入れる変数
インターネット接続用文字列 |& getline
インターネット接続用文字列 |& getline 読み込み結果を入れる変数
--------
o UNIX版Gawkは、次の書き方も可能です。
+ 入力コマンド文字列 |& getline [読み込み結果を入れる変数]
o 読み込み結果を入れる変数 -- 1行分が入ります。
+ 省略すると、変数$0に値を入れます。$0に値を入れる時は、$1以降と変数NFの値も更新します。
o 入力ファイル名 -- 指定すると、そのファイルから読み込みます。(例。getline < "in.txt" )
+ 標準入力を指定したい時は、特殊なファイル名を使います。
o 入力コマンド文字列 -- 指定すると、そのコマンドを実行した結果を読み込みます。
+ "dir" など、文字列の形で指定します。
+ この形をサポートしていない処理系があります。(Mawk for Windows 1.3.3)
o インターネット接続用文字列 -- /inet から始まる文字列の形で指定します。
+ 詳しい書き方は、「/inet = AWKからインターネットにアクセスする方法(Gawk専用)」
o 戻り値 -- 1 = 成功 / 0 = 取り出し終了 / -1 = エラー
+ 入力ファイルが見つからない時は、-1 を返します。
+ コマンドが間違っている時は、0(取り出し終了)を返します。
**** 使用例(Windowsの場合)
o Windows以外の方は、2箇所にある"dir"と 最後の"date /t"を、"ls"などに置き換えてみて下さい。
--------
BEGIN {
# ファイルからの読み込み。$0などを更新
while ((getline < "in.txt") > 0) {
print;
}
close("in.txt"); # 同じファイルを再利用する時は、一旦閉じます。
# ファイルから変数 var に読み込み。$0などはそのまま
while ((getline var < "in.txt") > 0) {
print var;
}
# コマンドからの読み込み。$0などを更新
while (("dir" | getline) > 0) {
print;
}
close("dir");
# コマンドから変数 var に 1行だけ読み込み
if (("date /t" | getline var) > 0) {
print var;
}
}
--------
o 行末のセミコロンは、C言語の書き方に合わせました。無くても動きます。
**** 機能
o ファイル(やパイプ)から1行読み込みます。
+ 1行取り出す時に探す改行文字は、変数RSの値を使います。
o 読み込み結果を入れる変数を指定しない時、変数$0を始め、$1, $2, $3,,, NFに値を入れます。
+ $1などの列に分割する時の区切り文字は、変数FSの値を使います。
+ $0や $1などの値には、変数RSで指定した改行文字は入りません。
o 入力ファイル名や入力コマンド文字列を指定しない時、変数 FNRとNR(= 読み込み行数)は1増えます。
o getline関数の引数は、括弧で括りません。getline(v) ではなく、getline v と書きます。
** 処理系に依存する動作
o Mawk for Windows 1.3.3
+ 「入力コマンド文字列 |」の形式は非対応です。
**** 確認した処理系
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
▼制作メモ
> print = ファイルなどに書き出す
printf = 文字列を組み立ててファイルなどに書き出す
close = 開いたファイル(やパイプ)を閉じる
+
$0 = 最後に読み込んだデータ、1行分
FS = 読み込んだ行を列に分割する時の区切り文字
RS = 1行読み込む時の改行文字
FIELDWIDTHS = 固定長ファイルを読み込む為の設定(Gawk専用)
BINMODE = バイナリモードで読み書きする(mawk,Gawk専用)
(2011年1月10日変更。引数のファイル名は文字列。なのでカッコ書き内を訂正)
(2010年10月7日追加。Gawkのインターネットアクセス)
(2010年9月14日追加。使用例で、ファイルから読み込みと変数利用)