gawk在处理时忽略传入的线路

时间:2012-10-03 12:28:17

标签: regex gawk

我正试图找到一种方法来刷新/忽略gawk中的行,当它使用如下脚本的脚本进行“一些工作”时:

BEGIN{
c = 1
}
$0 ~ /test/{
if(c == 1){
c = 0
system("sleep 3")
print "up"
c = 1
}
}

输入:

>gawk -f test.awk
test
test
test
up 
up
up

有没有办法告诉gawk在“正在工作”时忽略与模式匹配的行,并在完成后开始处理第一行?现在它正在缓冲,当它完成时,它开始处理“输入缓冲区”中的行,但它应该忽略这些行。

1 个答案:

答案 0 :(得分:1)

输入缓冲区超出了AWK脚本的控制范围。

在读取第一行之后,睡眠被触发,在睡眠结束后,无论下一行输入将被读取,没有办法(据我所知并且可以找到)跳过所有输入在睡眠发生的时候发生了。

我在C中看到的最接近的事情是进行低级非阻塞读取以在每次睡眠后消耗所有立即可用的输入。