![为什么这个简单的 awk 管道不起作用?](https://linux22.com/image/66402/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%20awk%20%E7%AE%A1%E9%81%93%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我正在努力追随这回答但我无法让它发挥作用。
我尽可能地简化了它,以尝试弄清楚发生了什么(现在只需在终端运行它):
rsync --progress -iav /my/dir1 /my/dir2 | awk '{ print($0) }'
但它只打印诸如rsync: failed to set times on [file]
.
我究竟做错了什么?
编辑:经过进一步调查,awk 似乎正在做某种缓冲。这:
for i in 10 20 30; do echo $i; sleep 1; done | awk '{print $0}'
演示了 3 秒后才看到输出的问题。
所以我想问题是如何让 awk 刷新其缓冲区?我试过:
for i in 10 20 30; do echo $i; sleep 1; done | awk '{print($0); fflush()}'
哪个有同样的问题。
答案1
最终使用mawk -Winteractive