Shell 两个连续的管道

Shell 两个连续的管道,shell,awk,pipe,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}'没有执行,整个命令没有显示任何内容 有什么想法吗?提前感谢您的帮助如果Foo | cmd生成输出,

此命令行是否存在问题:

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}'
没有执行,整个命令没有显示任何内容


有什么想法吗?提前感谢您的帮助

如果
Foo | cmd
生成输出,但
Foo | cmd | awk'{print}'
没有,那么您的问题是缓冲。谷歌
stdbuf行缓冲(特别请参见)并像以下那样使用它:

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

第一个awk输出的行数是否超过5行?请确保
Foo
的输出具有“Value1”或“Value2”。好的,第一个awk输出的是预期的连续流。实际上,即使是这个简单的命令也不起作用:
Foo | awk'/Value1/{printf(“%s,”,$2)}/Value2/{printf(“%s\n”,$6)}'awk'{print$0}
@JDoe您在使用什么shell?
Foo | awk'/Value1/{printf(“%s,”,$2)}/Value2/{printf(“%s\n”,$6)}>tmp和&awk'{print$0}'
有效吗?怎么样
Foo | awk'/Value1/{printf(“%s,”,$2)}/Value2/{printf(“%s\n”,$6)}>>(awk'{print$0}')
?非常好的建议!第一个命令:
Foo | awk'/Value1/{printf(“%s,”,$2)}/Value2/{printf(“%s\n”,$6)}
>tmp&&awk'{print$0}'Foo | awk'1'| awk'1'
works谢谢!哇。。。你救了我的命。你能解释一下原因吗?不客气。你看过我在回答中给你的参考页了吗?它详细地解释了原因。