Shell 在JSON文件中查找和替换

Shell 在JSON文件中查找和替换,shell,scripting,Shell,Scripting,我不熟悉脚本编写 我有以下三个文件: Availability.json Source URLs.txt Target URLs.txt 我的要求是我需要搜索源URL.txt中存在的URL,并用Availability.json文件中的目标URL.txt替换它们 我们如何在shell脚本中实现这一点?我们有大约50个网址 内容: Availability.json "drillDownUrl": "https://appdync-mex-cgn-2u.mex.group.net:8090/co

我不熟悉脚本编写

我有以下三个文件:

Availability.json
Source URLs.txt
Target URLs.txt
我的要求是我需要搜索源URL.txt中存在的URL,并用Availability.json文件中的目标URL.txt替换它们

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

内容: 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_url.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_url.txt:

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

根据您的操作系统
将URL加载到数组中(检查),如果操作系统
可能有所不同

IFS=$'\r\n' GLOBIGNORE='*' command eval  'SRC=($(cat src.txt))'
echo "${SRC[0]}"

IFS=$'\r\n' GLOBIGNORE='*' command eval  'TRGT=($(cat trgt.txt))'
echo "${TRGT[0]}"
备份json,然后使用
sed-i
在数组上迭代,例如:

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

for((i=0;i更新版本-
readarray
按建议使用,sed中的分隔符现在是
。我使用了您的文件名。请删除
源URL.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
readarray-tsrc为了((i=0;i您需要稍微解决一下问题,并向我们展示其中一些文件中的内容。在json文件中,我们有大约50个类似于Source_url.txt的URL,我们有json中的所有50个URL,在Target_url.txt中,我们有需要替换的URL…需要替换来自Target_url文件的所有50个URL…希望这有意义。…您需要显示一个JSON示例以及源和目标URL的示例。您粘贴在此处的链接无效。您使用的是什么shell?Bash?您是否需要它来处理您的shell,或者您的目标是实现广泛的兼容性?最好在此处具体说明。请阅读-摘要是,这不是解决vol的理想方法请不要将此添加到您的问题中。感谢您的想法…我将尝试更正以下错误,您能帮忙吗?sed:-e expression#1,char 11:unknown option to
s'sed:-e expression#1,char 11:unknown option to
s'用文件内容更新了我的问题,请告知我URL中有
/
s。当
$foo
$bar
有斜线时,您不能使用
s/$foo/$bar/
。(对于使用解析为正则表达式的字符的任何URL,这也会导致行为不当;例如,URL中的任何
都将被视为通配符,与任何字符匹配)这里的代码< > EVA用法是主要的安全bug级别,不幸的是,完全没有必要。<代码> RealStudio-T Src在脚本的开头添加该行,以去掉SooCusiurURLS.TXT:<代码> SED-I [/[[[S:::]:*$/d ]源代码URL的空行。