提问人:Ashish Sharma 提问时间:11/8/2023 最后编辑:Ashish Sharma 更新时间:11/9/2023 访问量:45
在 shell 脚本中起作用的正则表达式模式(没有给定子项的字符串)[已关闭]
Regex pattern that work in shell script (string without given subtring) [closed]
问:
我需要编写正则表达式模式,而不是验证给定的字符串。基本字符串将遵循结构“atmvttd/configs/alerts/default/prod/alerts.json” 这里要匹配的重要事项是:
- 在适当的默认情况下,任何字符串都可以像全球、印度、泰国等一样出现
- 代替 prod,除了 prod 之外,任何字符串都可以出现
- 其余部分应存在
这意味着这些字符串将传递:
"atmvttd/configs/alerts/default/qa/alerts.json"
"atmvttd/configs/alerts/default/dev/alerts.json"
"atmvttd/configs/alerts/global/qa/alerts.json"
"atmvttd/configs/alerts/global/dev/alerts.json"
但这些字符串将失败:
"atmvttd/configs/alerts/adaad/prod/alerts.json"
"atmvttd/configs/alerts/global/prod/alerts.json"
"atmvttd/configs/alerts/default/prod/alerts.json"
我正在根据要求添加代码片段。目前我没有解决方案,所以我使用另一种方式,排除考虑任何其他值。但是我有正确的正则表达式,根据我的问题,我只会使用它。
pattern='^"atmvttd/configs/alerts/[^/]+/(qa|dev|uat|sit|perf|preprod|test)/alerts.json"$'
action_needed=0
while IFS= read -r line; do
if [[ "$line" =~ $pattern ]]; then
echo "MATCH $line"
action_needed=1
fi
done < test.txt
if [[ $action_needed -eq 1 ]]; then
echo "looks good"
else
echo "Since require file/folder pattern $file_path was not changed. hence exiting."
exit 0
fi
答: 暂无答案
评论
[[ $var =~ $regex ]]