gpt4 book ai didi

regex - bash sed/grep 提取两个词之间的文本

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:15 24 4
gpt4 key购买 nike

我的问题和这里一样,除了我只想要第一次出现,忽略所有其他的:

How to use sed/grep to extract text between two words?

在他的例子中,如果是:

 input: "Here is a String Here is a String"

但我只关心第一个"is"

echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*(?= String)' 

输出:“是一个字符串这里是一个”

这甚至可以用 grep 实现吗?我也可以使用 sed 来完成这项工作。

谢谢

最佳答案

您的正则表达式恰好匹配位于“Here”和“String”之间的最长字符串。也就是说,确实是“这里是一个字符串这里是一个字符串”。这是 * 量词的默认行为。

$ echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*(?= String)'
is a String Here is a

如果你想匹配最短的,你可以在*量词后面放一个?(贪婪修饰符):

$ echo "Here is a String Here is a String" | grep -Po '(?<=(Here )).*?(?= String)'
is a
is a

关于regex - bash sed/grep 提取两个词之间的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21368934/

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