我正在尝试从syslog文件(/ var / log / messages)获取linux中附加的USB信息。
为此我读取日志文件并获取信息。现在我做的是我读取syslog文件并尝试找到“找到新USB设备”的Last occurrence(新附加的usb)。然后我试着读取接下来的16行以获取USB信息(尺寸,序列,制造商等)。
目前我正在使用以下语法:
grep -A 20 -e 'New USB device found' /var/log/messages | tail -n 16 > usb_detail
但是这种语法在一种情况下失败了。如果在“New USB ...”之后有25行,那么我将获得最后16行,然后我将跳过所需的实际信息。如果“New USB ...”之后只有16行,那么它将正常工作,我将获得所需的信息。
所以我想要的是在最后一次发现“找到新USB设备”后立即获得16行。不是“找到新USB设备”后的最后16行。
如果我的问题不明确,请告诉我。在此先感谢您的时间。
答案 0 :(得分:1)
有什么问题
fgrep -A 16 'New USB device found' /var/log/messages | tail -n 16
我在日志中看到的16行总是足够的(我最长的是10行)。如果grep少于16行,它将截断那里,并且在新设备之前你会得到一些无用的行,但grep在使用上下文时在匹配块之间打印--
。