场景:
用shell脚本,从A文件的获取URL参数,覆盖B文件的URL
A文件内容
B文件内容
方案:
看到两个文件中的URL都包含唯一的iOS设备名称。以它作为主键来匹配URL。用awk分别取出A,B文件的对应URL,用sed做替换。
步骤:
- 用awk 提取A,B文件中包含”iPhone5,1 “这个字符的URL
awk 的用法很简单 awk ‘/匹配规则/ {print(跟C语言类似的格式化输出)} ’ + 数据源文件
awk '/iPhone5,1/ {printf("iPhone51_expect=%s", $1)}' A.txt
awk '/iPhone5,1/ && /ipsw/ {printf("iPhone51_target=%s", $1)}' B.txt
这里因为B文件iPhone5,1 会同时匹配出URL所在行的数据和设备名所在行的数据,所以增加一个/ipsw/的过滤,双重匹配
- 用sed替换
sed -i '' "s@$iPhone51_target@URL=$iPhone51_expect@g" B.txt
这里注意几点:
* 用@符合作为sed替换命令的分隔符
* 用 -i 命令将替换结果写入文件
* -i 之后的’’ 表示不生成备份文件,解决报错问题
- 等替换完成后,可以再使用awk命令将两个文件的URL数据都提取出来并排序。然后用diff命令验证数据是否一致
get iOSCfg ipsw list
get mac plist ipsw list
diff mac_ipsw_list.txt pc_ipsw_list.txt