7

私は awk スクリプトを使用していますが、そのスケルトンはシンプルです

 awk '
 BEGIN {
     Variable declaration
 }
 {
    ACTION PART
 }
 END
 {
 }' FILE A

ファイルAはとても巨大なファイルです。だから私はファイル全体をトラバースしたくないので、私がやろうとしていることは、そのチェックが成功した場合、残りの部分の読み取りをスキップする必要があるように、アクション部分でいくつかのチェックを維持しようとしていることですファイルを直接END部分に移動します。

私の質問は、条件に基づいてスクリプトを ACTION PART から END Part にリダイレクトする方法です.. for ループの「break」のようなある種のコマンドを探しています。アイデアを共有していただけませんか。ありがとうございました。

4

2 に答える 2

13

コマンドはexitあなたが望むことをします。

manページから:

同様に、すべての END ブロックがマージされ、すべての入力が使い尽くされたとき (または exit ステートメントが実行されたとき) に実行されます。

于 2012-07-18T10:39:59.480 に答える
4

現在のブロックを終了するため「exit」を使用しますが、END は引き続き処理されます。以下の例を参照してください。

$ cat test.input
hello
world
one

$ awk 'BEGIN { print "Start-up"} {print "Read:", $1; if ($1 == "world") {exit}} END {print "Phase-out"}' test.input 
Start-up
W: hello
W: world
Phase-out
于 2012-07-18T10:42:54.267 に答える