gpt4 book ai didi

regex - 如何进行多行和非贪婪的模式范围匹配?

转载 作者:行者123 更新时间:2023-11-29 09:10:18 27 4
gpt4 key购买 nike

我正在尝试拉一个 bash 单线打印两个模式之间的线条。不过,我需要它是非贪婪的。我有一个包含以下内容的文件“test.txt”:

############ Apple ############
# 1
# 2
# 3
# 4
#################################

############ Orange ############
# 1
# 2
# 3
# 4
#################################

############ Grape ############
# 1
# 2
# 3
# 4
#################################

我要打印的是“橙色”部分。而且只有那个部分。也就是说,我想要打印以下内容:

############ Orange ############
# 1
# 2
# 3
# 4
#################################

我也不想匹配特定行数,因为行数会波动。我尝试了很多不同的东西。我已经尝试过 sed、awk、grep(使用 -P 和 *.? 正则表达式)。似乎没有什么适合这里的法案。 sed 和 awk 是贪心的,所以我无法匹配到该部分的末尾。 Grep(据我所知)不支持多行范围匹配。有没有使用内置插件的解决方案?我知道有 pcregrep,但我宁愿使用内置插件或与普通发行版一起“发布”的东西。我要“开箱即用”和优雅。可能吗?

最佳答案

使用地址范围 :

sed -n '/^#\+[ ]*Orange[ ]*#\+/,/^#\+$/ p' infile

它产生:

############ Orange ############
# 1
# 2
# 3
# 4
#################################

关于regex - 如何进行多行和非贪婪的模式范围匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20813393/

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