【发布时间】:2017-05-30 22:05:12
【问题描述】:
这个命令行有问题吗:
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}' 没有被执行,整个命令也没有显示任何东西......
有什么想法吗?提前感谢您的帮助
【问题讨论】:
-
第一个 awk 输出是否超过 5 行?
-
确保
Foo的输出有'Value1'或'Value2' -
嗯,第一个 AWK 按预期输出连续流。实际上,即使是这个简单的命令也不起作用:
Foo | awk '/Value1/{printf("%s,",$2)} /Value2/{printf("%s\n",$6)}' | awk '{print $0}' -
@JDoe 你用的是什么外壳?
Foo | awk '/Value1/{printf("%s,",$2)} /Value2/{printf("%s\n",$6)}' > tmp && awk '{print $0}' < tmp有效吗?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}'