如何找到包含字符串的行,打印它+之后的 x 行

如何找到包含字符串的行,打印它+之后的 x 行

我有一个日志,它不断将数据抛到屏幕上。我需要捕获包含特定字符串的行,然后打印它以及随后的 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。请注意,它不是便携式的(-APOSIX 不要求) 而tail -f是。

由于轮换日志很常见,您可能会发现这种find --follow=name方法更有用。您的操作系统find可能支持也可能不支持,请检查man 1 find您的操作系统。

相关内容