[英]To replace a immediate text after pattern match in Linux shell using sed
json 文件的内容
"iso_checksum": "md5:32fdf4fef4ef"
我将新校验和的值存储在变量 v = "4dfv45ffdf" 中
我想替换 md5 之后的值:从 32fdf4fef4ef 到 4dfv45ffdf 替换文件中的以上行后应该像
"iso_checksum": "md5:4dfv45ffdf"
32fdf4fef4ef 不是固定值所以我们不能像下面这样替换
sed -i 's/32fdf4fef4ef/4dfv45ffdf/' file
4dfv45ffdf 这也不是固定值,所以保存为 $v
任何人都可以帮助我执行上述任务
正确答案如下
y="4dfv45ffdf"
sed "/\"iso_checksum\":/s/\(^[^:]*[:][ ]\).*$/\1\"md5:$y\",/" file.json
我会按照以下方式使用 GNU AWK
完成此任务
awk -v v="4dfv45ffdf" '{gsub("md5:[[:xdigit:]]+","md5:"v);print}' file.json
解释:替换每个md5:
后跟 1 个或多个 base16 数字使用md5:
与v
的值连接, print
整行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.