awkプログラムの実行中にファイル名やシェルコマンドがgetlineと、2度以上使われる場合、ファイルがオープンされるのは(またはコマンドが実行されるのは)1度目だけです。その時、入力の最初のレコードはそのファイルまたはそのコマンドから読み込まれます。getlineで同じファイルまたはコマンドが次に使われるときは、別のレコードが読み込まれる、というぐあいになります。
これは、同じファイルをもう一度始めから読み始めたい場合、あるいはシェルコマンドを再実行したい場合(そのコマンドの出力をさらに読むのではなく)、特別なステップを踏む必要があります。このような場合は、次のようにclose関数を使います。
close(filename)
または、
close(command)
引数filenameやcommandは式でもかまいません。その値は、ファイルのオープンやコマンドの起動に使った文字列と完全に同じでなければなりません --- たとえば、パイプを次のようにオープンする場合、
"sort -r names" | getline foo
次のようにしてクローズしなければなりません。
close("sort -r names")
この関数呼び出しが一度実行されると、そのファイルまたはコマンドに対する、次のgetlineはそのファイルの再オープンまたはそのコマンドの再実行を意味します。