2

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

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 的情况下工作,但 > 中的某些内容无法正常工作并且文件最终为空。

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

4

1 回答 1

4

使用tee

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

另请参阅:将“tail -f”输出写入另一个文件关闭管道中的缓冲

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

于 2013-01-16T14:27:56.590 回答