簡體   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