You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从iOS的info.plist文件中用grep提取CFBundleVersion的值?

如何用grep从iOS的Info.plist提取CFBundleVersion的值?

先看你提供的示例Info.plist内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleShortVersionString</key>
    <string>$(MARKETING_VERSION)</string>
    <key>CFBundleVersion</key>
    <string>178273</string>
    <key>NSExtension</key>
</dict>
</plist>

下面提供几种用grep提取CFBundleVersion对应值的命令:

方法1:针对纯数字版本号

如果你的CFBundleVersion值只会是数字(比如示例中的178273),可以用这个简单的命令:

grep -A 1 "CFBundleVersion" Info.plist | grep -Eo "[0-9]+"
  • grep -A 1 "CFBundleVersion":找到包含CFBundleVersion的行,并显示该行之后的1行(也就是对应<string>标签的行)
  • grep -Eo "[0-9]+":只输出匹配到的数字部分

方法2:通用版本(支持任意字符的版本号)

如果版本号可能包含点号、字母等其他字符(比如1.2.3-beta),用这个更通用的命令:

grep -A 1 "CFBundleVersion" Info.plist | grep -Eo '>[^<]+<' | tr -d '<>'
  • grep -Eo '>[^<]+<':提取<string>标签里>和<之间的内容(包括符号)
  • tr -d '<>':去掉多余的尖括号,只保留版本号本身

方法3:单步匹配(需grep支持PCRE)

如果你的grep支持PCRE(Perl兼容正则表达式,比如GNU grep或macOS上通过brew安装的ggrep),可以用一个命令直接提取:

grep -Po '(?<=<key>CFBundleVersion<\/key>\s*<string>)[^<]+' Info.plist
  • (?<=...)是正向预查,匹配CFBundleVersion的key标签之后的<string>标签开头部分
  • [^<]+匹配直到下一个<之前的所有内容,也就是版本号本身

内容的提问来源于stack exchange,提问作者s-hunter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:07:41