tail -f,awk和输出到文件>

时间:2013-01-16 14:22:02

标签: bash awk sh squid tail

我正在尝试过滤日志文件并遇到问题,到目前为止我所拥有的是以下内容,这不起作用,

tail -f /var/log/squid/accesscustom.log | awk '/username/;/user-name/ {print $1; fflush("")}' | awk '!x[$0]++' > /var/log/squid/accesscustom-filtered.log

目标是获取包含

的文件
ipaddress1 username
ipaddress7
ipaddress2 user-name
ipaddress1 username
ipaddress5
ipaddress3 username
ipaddress4 user-name

并保存到accesscustom-filtered.log

ipaddress1
ipaddress2
ipaddress3
ipaddress4

它没有输出到accesscustom-filtered.log,但在> gt;工作不正常,文件结束为空。

编辑:将原始示例更改为正确

1 个答案:

答案 0 :(得分:4)

使用tee

tail -f /var/log/squid/accesscustom.log | awk '/username/;/user-name/ {print $1}' | tee /var/log/squid/accesscustom-filtered.log

另请参阅:Writing “tail -f” output to another fileTurn off buffering in pipe

注意:awk在超级用户示例中不像grep那样缓冲,因此您不需要对awk命令执行任何特殊操作。 (more info