首页 热点资讯 义务教育 高等教育 出国留学 考研考公
您的当前位置:首页正文

在shell中使用awk sed sort 等命令替换多个参数

2024-12-14 来源:华拓网

场景:

用shell脚本,从A文件的获取URL参数,覆盖B文件的URL

A文件内容

B文件内容

方案:

看到两个文件中的URL都包含唯一的iOS设备名称。以它作为主键来匹配URL。用awk分别取出A,B文件的对应URL,用sed做替换。

步骤:

  1. 用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/的过滤,双重匹配

  1. 用sed替换

sed -i '' "s@$iPhone51_target@URL=$iPhone51_expect@g" B.txt
这里注意几点:

* 用@符合作为sed替换命令的分隔符
* 用 -i 命令将替换结果写入文件
* -i 之后的’’ 表示不生成备份文件,解决报错问题
  1. 等替换完成后,可以再使用awk命令将两个文件的URL数据都提取出来并排序。然后用diff命令验证数据是否一致

get iOSCfg ipsw list

get mac plist ipsw list

diff mac_ipsw_list.txt pc_ipsw_list.txt

显示全文