输出管道输出到awk不会立即处理

时间:2015-02-13 12:27:28

标签: linux bash awk mawk

考虑以下虚拟备份脚本:

#!/bin/bash
echo "rsync started"
sleep 1 # rsync time
echo "rsync completed"
echo "starting upload"
sleep 5 # upload time
echo "upload completed" 

以及以下最小起始脚本

#!/bin/bash
/path/to/backup.sh|awk '/^rsync completed/ {print "Restarting services"}'
echo "backup completed"

我原本预计“重启服务”输出会在一秒钟之后出现,但是在Debian Wheezy下运行时它会在6秒后出现。

我的错误在哪里?当“rsync compeleted”字符串写入stdout时,为什么不直接处理awk操作?

1 个答案:

答案 0 :(得分:0)

使用sed而不是awk。

/path/to/backup.sh|sed 's/^rsync completed/Restarting services/g'
echo "backup completed"