getline
は次の行を読み取り、NR
カウンターを 1 増やします。 を使用した後、次の行から作業getline
をawk
再開します。これは、ほとんどの場合に望ましい動作です。
私の特別な状況では、次の行をのぞくだけでよく、その内容に応じて、次の行を読むか、1 行戻る必要があります。
で 1 行バックトラックするにはどうすればよいawk
ですか? NR
カウンターを手動で設定しようとしましNR=NR-1
たが、これは機能しません。または、変更せずに次の行だけを見る方法はありNR
ますか?
1行先読みが必要です。この場合、行を変数に保存して後で参照するだけでは機能しません。awk
マスター ファイルに多くのサブファイルが含まれている可能性がある で、読み書きのできるプログラミング ツールを実装しようとしています。このようなサブファイルは、 のような行で始まります"% file:file1"
。より低いインデントのある行または次のような行のある別の行に到達すると、そのようなファイルの終わりに"% file:file2"
到達します。
/% file:/
getline でこの行を既に読んでいる場合、一致するすべての行のルールセットは使用されません。NR
そのため、前の行にリセットしてから、awk
一致する行を再度読み取り/% file:/
、適切なルールが実行されます。