我有一个字符串从文件中获取,格式如下:
__version__ = '10.11.12'
版本号也可以是这种格式:0.1.2
或者 100.20.30
我有以下bash命令,但我的问题是它只能抓取每个数字中的一个值:
MODULE_VERSION=$(cat <%= project %>/__init__.py | grep -o '[0-9].[0-9].[0-9]')
我希望修改grep正则表达式以获取版本的所有数字值。
grep -o -E '([0-9]{3}\.[0-9]{2}\.[0-9]{2})|([0-9]\.[0-9]\.[0-9])|([0-9]{2}\.[0-9]{2}\.[0-9]{2})'
grep -E -o '[0-9]{1,3}\.[0-9]{1,2}\.[0-9]{1,2}'
这将匹配您未指定的某些实例。
误报示例
1.12.12
123.1.1
12.1.12
等等...
正如评论中所说,gnu grep将匹配所有出现的情况。 (我已经使用GNU grep 2.20测试了这些正则表达式)
MODULE_VERSION=$(python -c "import <%= project %>s; print(<%= project %>.__version__)")
- user8128927
grep -o '[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*'
来提取10.11.12
。 - Wiktor Stribiżew+
检查一个或多个数字,*
检查零个或多个数字。使用适合您需求的任何一个。 - Arihant<%= project %>
的目录吗?那需要加上引号。 - chepner