awk退出ACTION路径并直接进入END部分

时间:2012-07-18 10:36:51

标签: shell awk

我使用的是awk脚本,其骨架很简单

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

文件A是如此庞大的文件。所以我不想遍历整个文件,所以我想要做的是,我试图在ACTION PART中保留一些检查,如果检查成功,那么我需要跳过阅读其余部分该文件并直接转到END部分。

我的问题是如何根据条件将脚本从ACTION PART重定向到END Part ..我正在寻找某种类似命令,如for循环中的“break”。你能和人分享你的想法吗?谢谢。

2 个答案:

答案 0 :(得分:9)

exit命令将执行您想要的操作。

来自man page

  

同样,所有的          END块被合并,并在所有输入都耗尽时执行(或          当执行退出语句时。)

答案 1 :(得分: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