是否可以在连续流上使用grep?
我的意思是有点像tail-f<file>命令,但输出上有grep,以便只保留我感兴趣的行。
我尝试过tail-f<file>|grep模式,但似乎只有在tail完成后才能执行grep,也就是说永远不会执行。
是否可以在连续流上使用grep?
我的意思是有点像tail-f<file>命令,但输出上有grep,以便只保留我感兴趣的行。
我尝试过tail-f<file>|grep模式,但似乎只有在tail完成后才能执行grep,也就是说永远不会执行。
当前回答
这条命令对我有效(Suse):
mail-srv:/var/log # tail -f /var/log/mail.info |grep --line-buffered LOGIN >> logins_to_mail
收集邮件服务的登录信息
其他回答
在没有行缓冲选项的地方,使用awk(另一个很棒的bash实用程序)而不是grep!它将不断地从尾部传输数据。
这是如何使用grep的
tail -f <file> | grep pattern
这就是你使用awk的方式
tail -f <file> | awk '/pattern/{print $0}'
如果你想在整个文件中找到匹配项(而不仅仅是尾部),并且你想让它坐下来等待任何新的匹配项,这很好:
tail -c +0 -f <file> | grep --line-buffered <pattern>
-c+0标志表示输出应该从文件开头(+)开始0字节(-c)。
我一直使用tail-f<file>|grep<pattern>。
它会等到grep刷新,而不是等到它完成(我使用的是Ubuntu)。
没有看到任何人为我提供了通常的帮助:
less +F <file>
ctrl + c
/<search term>
<enter>
shift + f
我更喜欢这样,因为您可以随时使用ctrl+c停止并浏览文件,然后只需按shift+f返回实时流式搜索。
你肯定不会成功
tail -f /var/log/foo.log |grep --line-buffered string2search
当您使用“colortail”作为tail的别名时,例如在bash中
alias tail='colortail -n 30'
你可以通过类型别名如果这个输出类似tail是colortail-n30的别名。那你就有你的罪魁祸首了:)
解决方案:
使用删除别名
unalias tail
确保通过此命令使用的是“real”尾部二进制文件
type tail
它应该输出如下内容:
tail is /usr/bin/tail
然后可以运行命令
tail -f foo.log |grep --line-buffered something
祝你好运