$echo "a,b,c,d,e,f,g" | cut -d,-f-4a,d$echo "a,-f6-f,gecho "a,g" | awk '{ print$echo "a,g" | awk '{ print| "cut -d,-f-4"; print | "cut -d,-f6-"; }'f,ga,d$echo "a,g" | awk 'BEGIN {cmd1 = "cut -d,-f-4"; cmd2 = "cut -d,-f6-"} { print | cmd1; close(cmd1); print | cmd2; close(cmd2)}'a,df,g| "echo hello"; print | "echo goodbye"; }'hellogoodbye
(作为旁注,我意识到在awk中这是一件非常愚蠢的事情,但这是我见过它的唯一命令!).
据我了解,这应该将记录分为两个命令 – 按顺序.但由于某种原因,输出看起来相反.如果我这样做
然后一切都按照我的预期顺序进行.我认为这肯定是某种竞争条件,但我很惊讶awk不等待管道中的子命令完成.这是一个使用awk或者某些东西来使用gawk的已知问题吗?有没有办法避免这样的陷阱?
编辑:
我也尝试使用mawk ……相同(反转)的结果,似乎两者都是一致的.
解决方法 为了确保完成外部命令,您必须执行 close命令. 总结以上是内存溢出为你收集整理的为什么(g)awk反转这些输出线?全部内容,希望文章能够帮你解决为什么(g)awk反转这些输出线?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)