我有一个日志,它不断将数据抛到屏幕上。我需要捕获包含特定字符串的行,然后打印它以及随后的 5 行。使用静态文件很容易做到,例如:grep -A 5 "XXX" /mnt/flash/logs/system/messages
答案1
tail -f /mnt/flash/logs/system/messages | grep -A 5 "XXX"
关于tail -f
:
-f
如果输入文件是常规文件或者文件操作数指定了 FIFO,则在复制输入文件的最后一行后不要终止,而是在输入文件中读取并复制更多可用字节。[…]
你已经知道了grep -A
。请注意,它不是便携式的(-A
POSIX 不要求) 而tail -f
是。
由于轮换日志很常见,您可能会发现这种find --follow=name
方法更有用。您的操作系统find
可能支持也可能不支持,请检查man 1 find
您的操作系统。