首页 > 解决方案 > 在 JSON 文件中查找和替换

问题描述

我是脚本新手。

我有以下三个文件:

Availability.json
Source URLs.txt
Target URLs.txt

我的要求是我需要搜索 Source URLs.txt 中存在的 URL,并将其替换为 Availability.json 文件中的 Target URLs.txt。

我们如何在 shell 脚本中实现这一点?我们有大约 50 个 URL。

内容:Availability.json

"drillDownUrl": "https://appdync-mex-cgn-2u.mex.group.net:8090/controller/#/location=METRIC_BROWSER&timeRange=last_30_minutes.BEFORE_NOW.-1.-1.180&application=1000&metrics=APPLICATION_COMPONENT.647.4743559",

         "label": null,
        "description": null,
        "drillDownUrl": "https://appdync-mex-cpo-7u.mex.group.net:8090/controller/#/location=METRIC_BROWSER&timeRange=last_30_minutes.BEFORE_NOW.-1.-1.180&application=1&metrics=APPLICATION_COMPONENT.647.474",

Source_URLs.txt

 https://appdync-mex-cgn-2u.mex.group.net:8090/controller/#/location=METRIC_BROWSER&timeRange=last_30_minutes.BEFORE_NOW.-1.-1.180&application=1000&metrics=APPLICATION_COMPONENT.647.4743559

https://appdync-mex-cpo-7u.mex.group.net:8090/controller/#/location=METRIC_BROWSER&timeRange=last_30_minutes.BEFORE_NOW.-1.-1.180&application=1&metrics=APPLICATION_COMPONENT.647.474

Target_URLs.txt:

https://www.apdyn.com/Application#=12
https://www.appdyn.com/Application#=123

标签: shellscripting

解决方案


更新版本 -readarray建议使用,sed 中的分隔符现在是|. 我用了你的文件名。请删除您的空白行和前导空格Source_URLs.txt

readarray -t SRC < Source_URLs.txt
echo "${SRC[1]}"

readarray -t TRGT < Target_URLs.txt
echo "${TRGT[1]}"

for (( i=0; i<${#SRC[@]}; i++ ));
do
  sed -i "s|${SRC[$i]}|${TRGT[$i]}|g" Availability.json
done

注意:您Availability.json的无效 - 最后一个字符是,重复键并且没有对象 - 在https://jsonformatter.curiousconcept.com/中检查它


推荐阅读