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