两个连续的管道

时间:2017-05-30 22:05:13

标签: shell awk pipe

此命令行是否存在问题:

Foo | awk '/Value1/{printf("%s,",$2)} /Value2/{printf("%s\n",$6)}' | awk '(NR % 5 == 1){print $0}'

其中Foo是自定义程序。这个命令以前工作正常。但是,自最近更新自定义分发(基于Yocto)。它似乎不再起作用了。奇怪的是awk '(NR % 5 == 1){print $0}'没有执行,整个命令也没有显示任何内容......

请问好吗?提前感谢您的帮助

1 个答案:

答案 0 :(得分:0)

如果Foo | cmd产生输出但Foo | cmd | awk '{print}'没有产生,那么您的问题就是缓冲。 Google stdbuf line buffering(特别是http://www.pixelbeat.org/programming/stdio_buffering/)并将其用作:

Foo | stdbuf -o0 awk '...' | awk '...'