我有两个值“usb 1-3”和“地址 20”。现在我正在尝试搜索一个包含这两个词的文本文件(基本上是一个日志文件)。
现在该文件有很多行,其中包含以下单词:
Apr 27 13:30:55 box2 kernel: usb 1-3: USB disconnect, address 20
and
Apr 27 13:25:43 box2 kernel: usb 1-3: new high speed USB device using ehci_hcd and address 20
现在我的要求是:我想得到这两个单词倒数第二次出现的那一行,然后是接下来的 16 行。就像文件中有 6 次出现(这两个词都出现 6 行),那么我需要第 5 次出现的行和接下来的 16 行。如果有 10 次出现,那么我需要第 9 次出现和接下来的 16 行。
目前我正在使用
egrep -A 20 'usb 1-3:.*address 20' filename | tail -16 > output.
但它给了我最后一次出现。不是倒数第二个。请注意,该行应该有两个单词并且顺序相同(首先是usb 1-3,然后是地址20)如果我的问题不清楚,请告诉我。提前致谢。