首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux shell中使用sed替换模式匹配后的即时文本

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

Stack Overflow用户
提问于 2022-04-08 07:15:26
回答 2查看 530关注 0票数 -1

json文件的内容

代码语言:javascript
复制
"iso_checksum": "md5:32fdf4fef4ef"

我将新校验和的值存储在变量v= "4dfv45ffdf“中。

我想替换md5后的值:从32fdf4fef4ef替换到4dfv45ffdf,替换后,文件中的上述行应该如下

代码语言:javascript
复制
"iso_checksum": "md5:4dfv45ffdf"

32 fdf4fef4ef不是固定值,所以我们不能像下面这样替换

代码语言:javascript
复制
sed -i 's/32fdf4fef4ef/4dfv45ffdf/' file

4dfv45ffdf这个值也不是固定值,它保存在$v中。

有谁能帮我完成上述任务吗?

EN

回答 2

Stack Overflow用户

发布于 2022-04-08 09:32:26

正确答案如下

代码语言:javascript
复制
y="4dfv45ffdf"
sed "/\"iso_checksum\":/s/\(^[^:]*[:][ ]\).*$/\1\"md5:$y\",/" file.json
票数 1
EN

Stack Overflow用户

发布于 2022-04-08 07:56:40

我将按照以下方式使用GNU AWK来完成此任务

代码语言:javascript
复制
awk -v v="4dfv45ffdf" '{gsub("md5:[[:xdigit:]]+","md5:"v);print}' file.json

说明:将每个md5:替换为1或更多个基本16位,使用md5:将其与vprint整行的值连接起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71793053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档