gpt4 book ai didi

macos - BSD grep "?"GNU 通配符替代

转载 作者:行者123 更新时间:2023-12-04 18:29:46 25 4
gpt4 key购买 nike

我有一个 grep 命令,可以在我的 Mac 上使用 BSD grep 2.5.1-FreeBSD 来搜索一个很长的单行 bash var:
echo $MY_VAR | grep -Eo s3.+?model
在带有 GNU grep 2.25 的 Ubuntu 上,?通配符似乎不起作用。它不会在“模型”的第一次出现时停止。

有人可以告诉我如何在 Ubuntu 中获得同样的匹配吗?打开以更改模式或安装不同/更新的 grep。

不打算列出我迄今为止尝试过的百万种模式,但为此苦苦挣扎了一段时间。

编辑:以下似乎有效,因为在“模型”之后有一个“,”,但看起来很丑:
egrep -o 's3.*model' | grep -o '^[^,]*'
有没有更好的办法?

最佳答案

您可以使用 PCRE 正则表达式选项 P使用 GNU grep ,它还允许使用非贪婪量词:

echo $MY_VAR | grep -Po s3.+?model
^

online demo :
MY_VAR="s3://model/;s3://another/model"
echo $MY_VAR | grep -Po 's3.+?model'
# => s3://model
# s3://another/model

关于macos - BSD grep "?"GNU 通配符替代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55552674/

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