gpt4 book ai didi

linux - 需要 grep/awk/gawk 返回整个部分,尽管有断线

转载 作者:太空宇宙 更新时间:2023-11-04 10:09:21 25 4
gpt4 key购买 nike

我有以下问题...我有一个文件,类似于这个:

2018-04-25: line1
2018-04-25: line2
this is another line
I'm a line
2018-04-25: line3
2018-04-25: line4

如果我运行:grep 'this' test.log 结果将是:

    this is another line

但我需要的结果是:

2018-04-25: line2
this is another line
I'm a line

因为“这是另一行”实际上是同一个条目的一部分,唯一的问题是我们在那里有一个断线,我需要我的 grep 来忽略这个断线。

  • grep -C 1 'this' test.log
  • grep -B 1 'this' test.log

这不是一个真正的选择,因为我可能在条目的开头和结尾之间有更多的行/断行。

最佳答案

这是使用 GNU awk 的一种方法:行首的日期是记录分隔符。对于包含模式的记录,打印上一个记录分隔符和当前记录。

gawk -v RS='(^|\n)[0-9-]{10}' '
/this/ {sub(/^\n/, "", prev_RT); print prev_RT $0}
{prev_RT = RT}
' file

或者,更直接

awk '
function printif() {if (record ~ /this/) print record}
/^[0-9-]{10}/ {printif(); record = ""}
{record = (record ? record "\n" : "") $0}
END {printif()}
' file

关于linux - 需要 grep/awk/gawk 返回整个部分,尽管有断线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50023948/

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