を加工した後、私は私のawkスクリプトによって処理された単純なファイル、持って行を印刷:AWK:彼らはすでに
AAAAA BBBBBB
CCCCC DDDDDD
EEEEE FFFFFF
GGGGG HHHHHH
IIIII JJJJJJ
まず、私は最後の行の1をプリントアウトしたいので、私はで始まります結果としてIIIII JJJJJJ
を得ることができるように、
#!/usr/bin/awk
{if (NR==5){print $0;}}
を取得する。
ここで、5行目が印刷された後に2行目を印刷したいとします。だから私はこれにスクリプトを変更する:
#!/usr/bin/awk
{if (NR==5){print $0; NR=2;}
if (NR==2){print $0;}
しかし、この場合、それは決して終わりのないループです。 5行目を最初に印刷し、2行目をもう一度印刷せずに2行目を印刷するにはどうすればよいですか?明確にするため
予想される出力:
IIIII JJJJJJ
CCCCC DDDDDD
最終的なスクリプトでは決して終わりのないループです。 'NR = 2'を設定すると、awkは2行目の入力を読み直すように指示しません。次の行、6行目が読み込まれるまで変数' NR'を値 '2'に設定します。 'は' 6 'になります。またawkの 'condition {action}'の構文が欠落しています - awkはCではありません。Arnold RobbinsのEffective Awk Programming、第4版を読んでください。 –