gpt4 book ai didi

regex - awk 或 sed : Return lines between two instances of the same pattern

转载 作者:行者123 更新时间:2023-11-29 08:58:36 25 4
gpt4 key购买 nike

我有一个如下所示的文本文件:

-+- beginning text
hey there
hi there
ho there
-+- ending text
other stuff
that is
immaterial for
my purposes

我只想抓取 -+- 模式之间的线条,所以它会返回:

hey there
hi there
ho there

标准的 awk 方式:

awk '/beginning text/ {flag=1;next} /ending text/ {flag=0} flag {print}'

只要“开始文本”和“结束文本”是不同的模式,效果就很好。

唉,对于我需要的,“开始文本”和“结束文本”可以改变。两条线唯一一致的部分是“-+-”。文件中的所有其他文本可以完全不同;我不能依赖任何一致的模式。唯一可靠的文本是 -+-。当两个字符串相同时,awk 将失败。

关于如何返回同一模式的两个离散实例之间的线(不包括包含模式的线)的任何想法?不一定是 awk,只要能在 bash shell 脚本中运行即可。

最佳答案

如果模式相同并且您不想打印出模式行,则只需在每次看到模式时通过反转标志来组合这两种模式。

awk '/^-\+-/ {flag=!flag; next} flag {print}'

关于regex - awk 或 sed : Return lines between two instances of the same pattern,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31433486/

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