繁体   English   中英

使用 sed 在 Linux shell 中模式匹配后替换立即文本

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM