如何从Podfile中提取Alamofire版本号的指定数字?
解决方法
问题分析
你之前的命令失败主要有两个原因:
- 未转义版本号里的
.(正则中.默认匹配任意字符,而非实际的点号); - 默认
grep使用基础正则语法,+属于扩展正则特性,需要加-E参数启用。
方法1:带扩展正则的grep组合
先匹配包含Alamofire版本号的行,再提取最后一段数字:
grep -Eo 'Alamofire.git.*[0-9]+\.[0-9]+\.([0-9]+)' ../Podfile | cut -d. -f3
或者直接精准捕获最后一段数字:
grep -Eo 'Alamofire.git.*[0-9]+\.[0-9]+\.([0-9]+)' ../Podfile | grep -Eo '[0-9]+$'
方法2:使用sed直接提取
sed可以一步完成匹配与提取,无需额外管道:
sed -n 's/.*Alamofire.git.*[0-9]\+\.[0-9]\+\.\([0-9]\+\).*/\1/p' ../Podfile
-n:仅输出匹配的行s/.../.../p:将整行内容替换为捕获到的最后一段数字并打印
方法3:使用awk分割定位
通过点号分割行内容,直接取最后一段数字:
awk '/Alamofire.git/ {split($0, arr, /[.]/); print arr[length(arr)]}' ../Podfile
/Alamofire.git/:筛选目标行split(...):用点号分割行内容为数组arr[length(arr)]:取数组最后一个元素(即版本号的最后一段)
内容的提问来源于stack exchange,提问作者Tbi
相关产品推荐
相关产品推荐

