我的正则表达式很弱。我很惭愧,但这是真的。
我可以通过如下命令将包含Mac应用程序(Xcode)版本的整行记录到控制台:
defaults read /Applications/Xcode.app/Contents/Info.plist | grep 'CFBundleShortVersionString = "'
字符串
它显示如下所示的行:
CFBundleShortVersionString = "14.2";
型
我如何在grep命令中添加正则表达式来捕获“14.2”位?我知道我需要使用类似`([0-9]+.[0.9]+)(捕获1个或多个数字,一个句点和一个或多个数字)的东西,但无法使其工作。
4条答案
按热度按时间sshcrbum1#
把那条线
字符串
b4lqfgs42#
defaults
命令will accept一个键,并将返回该键的值,因此这应该报告您要查找的值:字符串
在一些快速测试中,当指定plist文件而不是
com.apple.something
域时,defaults
命令似乎需要绝对路径(以/
开头)。此外,手册页还有以下注解:
警告:默认命令将在即将发布的主要版本中更改为仅在首选项域上操作。通用plist操作实用程序将被合并到不同的命令行程序中。
据报道,这张纸币至少从2017年就存在了,所以这种情况可能不会很快发生。
lg40wkob3#
您可以使用
字符串
参见online demo。
n
-抑制默认行输出.*CFBundleShortVersionString = "\([^"]*\).*
-匹配包含CFBundleShortVersionString = "
的整行,然后将"
以外的所有零个或多个字符捕获到组1中\1
-用组1值替换整行p
-仅输出成功替换的结果。bt1cpqcv4#
字符串
它将匹配
1.2
或1.2.4