regex - 如何修复bash脚本以在另一个文件中查找正则表达式?
问题描述
我尝试使用以下文件在文件中查找某个正则表达式并回显一些输出
content=`cat $1 `
REGEX_RANGE="s/COPYRIGHT .*[0-9]{4}-[0-9]{4} alex4200"
REGEX_SINGLE="s/COPYRIGHT .*[0-9]{4} alex4200"
if [[ $content =~ $REGEX_RANGE ]];
then
echo "File has year range"
else
if [[ $content =~ $REGEX_SINGLE ]];
then
echo "File has single year"
else
echo "No REGEX found"
fi
fi
test.txt
但是,当我在包含内容的文件上使用此脚本时
COPYRIGHT (c) 2020 alex4200
它返回No REGEX found
。我在这里想念什么?
解决方案
您的模式有效,尽管可能不是您想要的。
$: grep -E 'COPYRIGHT .*[0-9]{4}-[0-9]{4} alex4200' file
COPYRIGHT (c) 2020-9999 alex4200
$: grep -E 'COPYRIGHT .*[0-9]{4} alex4200' file
COPYRIGHT (c) 2020 alex4200
COPYRIGHT (c) 2020-9999 alex4200
您的单个 reexe 将匹配两种格式;.*
不仅吃下一个空间,还吃第一(c)
年和一个范围模式的冲刺。
$: if grep -qE 'COPYRIGHT .*[0-9]{4} alex4200' file; then echo found; else echo nope; fi
found
推荐阅读
- spring - 将多个 application.yml 从工作目录绑定到 ConfigurationProperties
- android - HILT 是否支持注入泛型类型?
- gcc - make 的 -j 参数必须与核心数完全相同吗?
- elixir - 如何处理 Elixir 中的尝试和救援错误
- jenkins - 用于报告工具的阶段帖子部分中的 Jenkins 管道环境变量
- c# - 如何使用 Parallel.ForEach 从 excel 文件中读取单元格数据
- android - 从 ByteArray 播放音频
- asp.net-core - Audit.NET 将 2 个不同的上下文审计到 2 个不同的数据库
- ios - 在 swinject 环境下卡住情节提要控制
- flutter - 如何正确显示拍摄的照片?