鉴于此awk
脚本:
END {
print "Y" | "cat"
print "X"
print "X"
}
# Output:
# X
# X
# Y
Run Code Online (Sandbox Code Playgroud)
既然 Y 应该在其他语句之前运行,为什么不首先打印它?
如果您希望cat
进程Y
在X
s之前终止(并且要打印),那么只需close("cat")
在print "Y" | "cat"
.
其余所有内容都在手册页中进行了解释,您最好阅读一下。
既然 Y 应该在其他语句之前运行,为什么不首先打印它?
本cat
不应该写它的输出,另一个语句之前终止。它可能会在两次print "X"
调用之前、之后或之间写入其输出。
当您print ... | "command ..."
在 awk 中使用类似的东西时,command ..
它作为一个异步进程启动,其标准输入连接到管道(via popen("command ...", "w")
),并且该进程不一定会在您调用之前终止并写入其输出close("command ...")
(或者在 awk 终止时隐式完成)。
看一个例子:
BEGIN {
print "foo" | "cat > file"
print "bar" | "cat > file"
}
Run Code Online (Sandbox Code Playgroud)
结果将file
包含两行,foo
和bar
; 该cat > file
命令不会为每一行单独运行。
归档时间: |
|
查看次数: |
612 次 |
最近记录: |