gpt4 book ai didi

regex - 如何 grep 查找先前匹配行上方的行

转载 作者:可可西里 更新时间:2023-11-01 11:51:34 25 4
gpt4 key购买 nike

我有日志文件,其中的日期只是定期附加。我的日志文件看起来像这样:

Monday 2017
foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo ALARM foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo ALARM foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo

我正在制作一个如下所示的脚本:

grep 'ALARM' myfile.log | tail -1

我需要搜索最后一个警报上方的前一个日期条目,并将其包含在我的结果中。我不知道它会在匹配的警报线以上多少行发生。

期望的输出:

Monday 2017
foo foo foo foo foo foo ALARM foo foo foo foo foo

最佳答案

假设日期模式是 2017 年星期一

grep -E 'Monday 2017|ALARM' | grep -B1 'ALARM'

第二个 grep 是删除 ALARM 匹配之间的多个日期模式,

编辑:再次阅读问题似乎只需要匹配 ALARM 的最后一行,我会使用以下 perl 一个衬里:

perl -ne 'if(/Monday 2017/){$last_date=$_}if(/ALARM/){$date=$last_date;$line=$_}END{print $date,$line}' <<END
Monday 2017
foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo ALARM foo foo foo foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo
foo foo foo foo foo foo ALARM foo foo foo foo foo
foo foo foo foo foo foo foo foo foo foo foo foo
END

关于regex - 如何 grep 查找先前匹配行上方的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48080487/

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