gpt4 book ai didi

bash - 在 Shell 参数扩展中使用模式

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

我正在阅读一个页面并试图从中提取一些数据。我对使用 bash 很感兴趣,在浏览了几个链接后,我开始知道“Shell Parameter Expansion”可能会有所帮助,但是我发现在我的脚本中使用它很困难。我知道使用 sed 可能更容易,但据我所知,我想知道如何在 bash 中实现这一点。

shopt -s extglob

str='My work</u><br /><span style="color: rgb(34,34,34);"></span><span>abc-X7-27ABC | </span><span style="color: rgb(34,34,34);">build'
echo "${str//<.*>/|}"

我希望我的输出是这样的:My work|abc-X7-27ABC |build

我想检查它是否只接受单词而不是模式,它似乎正在处理单词。

例如,
echo "${str//span style/|}" 有效但是
echo "${str//span.*style/|}" 没有

另一方面,我在其中一个链接中看到它确实接受模式。我很困惑为什么它不能与我上面使用的模式一起使用。

How to make sed do non-greedy match?(用户konsolebox的解决方案)

最佳答案

您犯的一个错误是混合使用 shell 通配符和正则表达式。在 shell glob 中,点按字面意思作为点字符,而不是任何字符的 0 个或多个。

如果您改用此代码:

echo "${str//<*>/|}"

然后它会打印:

My work|build

关于bash - 在 Shell 参数扩展中使用模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20240214/

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