shell - 在 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
解决方案
更新版本 -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/中检查它
推荐阅读
- javascript - 如何通过多个相同的属性过滤对象数组
- text-parsing - 在python中删除以octothorpe开头的列表元素会省略一些元素
- r - R plot:如何正确调整挑剔的边距?
- c++ - 概念并没有像预期的那样解决歧义。代码示例有什么问题?
- python - pivottable.js display 引入了源 pandas Dataframe 中不存在的 NULL 值
- c++ - 遍历字符串以检查每个字符串中是否有字符出现
- highcharts - Highcharts x-range系列的连接点
- java - 如何在 Windows 7 32 位上安装 intellij IDEA 社区版?
- java - 匹配的字符串不会在 if else 条件 java 中通过语句
- python - 如何拍摄硒中发生的事情的视频