awk 中 对于tail f 的文件重定向

先看一下如下两个命令:

tail -f in | awk '{print  $0}'    

如果我们不断的往 in 中输入,结果是可以输出来的。 

 

第二条命令  

awk  ‘{print $0}’  in >> out

是可以把 in中的内容  打印到 out中的

 

第三条命令  把如下两个命令结合起来,就不好使了 

tail -f in | awk '{print  $0}' >> out        不好使

tail  in | awk '{print  $0}' >> out          好使

out中什么也没有, 好像被阻塞了一样, 后来查了原因 往文件中写  跟往终端上输出是不一样的,往文件中写,是先写到pipe的缓冲区中, 然后再往文件中写,用了 tail -f 之后表示一个流还没有完成, 缓冲区不会自动写, 所以out中一直没有内容。

 

正确的写法是  tail -f in | awk '{print  $0; fflush() }' >> out

这样就完美的写出了对一个流式的 awk 的处理 并将处理的结果保存到一个文件中。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值