1

我试图找到一种方法来刷新/忽略 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 在“工作”时忽略与模式匹配的行,并在完成后开始处理第一行?现在它正在缓冲,完成后它开始处理“输入缓冲区”中的行,但它应该忽略这些行。

4

1 回答 1

1

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

读取第一行后触发睡眠,睡眠完成后将读取下一行输入,没有办法(据我所知并且可以找到)跳过所有发生的输入,而睡眠发生了。

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

于 2012-12-14T23:27:37.190 回答