gpt4 book ai didi

linux - 获取 linux 中单词倒数第二个出现的行

转载 作者:太空狗 更新时间:2023-10-29 11:33:51 24 4
gpt4 key购买 nike

我有两个值“usb 1-3”和“address 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)如果我的问题不清楚,请告诉我。提前致谢。

最佳答案

这需要两次传递,但它应该可以解决问题:

tail -n +`egrep -n 'usb 1-3:.*address 20' filename |
tac | sed -n '2s/:.*//p'` filename | head -17

您可以使用 awkperl 一次性完成,但您需要管理一些缓冲区。请注意,它使用了 tac,这是一个反向的 cat。如果您的系统上没有它,请尝试将 tail -r 放到它的位置。

关于linux - 获取 linux 中单词倒数第二个出现的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com