gpt4 book ai didi

regex - 在 bash 中使用正则表达式查找文件中的字符串

转载 作者:行者123 更新时间:2023-12-02 03:32:46 24 4
gpt4 key购买 nike

我有一堆文件,其中使用了模板标签。我想列出所有文件中使用的所有不同模板标签。

这是我用过的 bash 脚本,没有给出匹配...

for f in EHS/*.html;  do
value=`cat ${f}`;
[[ $value =~ "({%.*?%})" ]]
if [[ ${BASH_REMATCH[0]} ]]; then
echo "Found: ${BASH_REMATCH[0]}";
fi
done;

这是其中一个 html 文件的片段:

<p>
The ordernumber is: {%OrderNumber%}<br>
The partnumer is: {%PartNumber%}
</p>

所以我的目标是只返回所有使用的不同标签...

最佳答案

两个问题:

  1. 正则表达式应该不加引号,但 {} 需要转义,因为它们的含义很特殊。

  2. bash 不支持像 *? 这样的节俭量词。

使用grep更简单:

grep -o '{%[^}]*%}'

-o 选项只返回匹配的部分,每行一个。

请注意,像 {%ab%cd}ef%} 这样的字符串是不匹配的,因为没有简单的方法可以防止标准 grep 中的部分多字符定界符。使用 pgrep,您可以使用

grep -o -P '{%.*?%}'

正如您最初的意图。

关于regex - 在 bash 中使用正则表达式查找文件中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51305161/

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