このawk
スクリプトが与えられたら:
END {
print "Y" | "cat"
print "X"
print "X"
}
# Output:
# X
# X
# Y
Yは他のステートメントよりも先に実行する必要があるので、Yを最初に印刷するのはどうですか?
ベストアンサー1
cat
■前にプロセスを終了してY
印刷するには、sの後に呼び出すだけX
です。close("cat")
print "Y" | "cat"
残りの部分はマンページに記載されているので、読むことをお勧めします。
Yは他のステートメントよりも先に実行する必要があるので、Yを最初に印刷するのはどうですか?
cat
その出力は、他のステートメントの前に作成または終了しないでください。呼び出し前、呼び出し後、または呼び出しの間に出力を書き込むことができますprint "X"
。
print ... | "command ..."
awkでこのようなものを使用すると、標準command ..
入力はパイプに接続された非同期プロセスで始まり(を通じて popen("command ...", "w")
)プロセスは必ずしも終了せず、出力を呼び出して書き込む前にclose("command ...")
(またはawkが式を終了するときに暗黙的に)完全です。
次の例をご覧ください。
BEGIN {
print "foo" | "cat > file"
print "bar" | "cat > file"
}
結果にはfile
2行が含まれ、foo
コマンドbar
はcat > file
各行に対して個別に実行されません。