gpt4 book ai didi

json - Bash Shell 从文件中剪切行并使用 sed 插入到另一个文件位置

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:45 25 4
gpt4 key购买 nike

我有一个问题,并尝试通过 sed 命令解决它。

我有 file.txt 第一行有文本。例如,文本是:# username:blablabla,password:blablabla,我还有另一个名为 file.json 的文件,内容如下:

{
"Subject": {
"Data": "GitCommit login information",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "This is the message body in text format.",
"Charset": "UTF-8"
},
"Html": {
"Data": "bad data"
}
}
}

问题是:如何用 file.txt 中的行替换 Json 的值是“坏数据”?结果必须是:

{
"Subject": {
"Data": "GitCommit login information",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "This is the message body in text format.",
"Charset": "UTF-8"
},
"Html": {
"Data": "username:blablabla,password:blablabla"
}
}
}

可以用bash命令吗?

最佳答案

让我在这个回答的开头说你应该真的使用 JSON 解析器来正确和安全地更改你的 JSON。

也就是说,您可以像这样使用 sed 来完成它:

# double backslashes (\); escape special sed-replacement chars (&/\); escape quotes (")
escape_json_for_sed() {
sed 's/\\/\\&/g; s/[&/\]/\\&/g; s/"/\\\\&/g'
}

sed 's/"Data": "bad data"/"Data": "'"$(head -1 file.txt | escape_json_for_sed)"'"/g' -i file.json

请注意辅助 shell 函数 escape_json_for_sed() 用于从文件读取的替换值。有了它,我们:

  1. 转义sed中有特殊意义的字符替换字符串(/, \ and & );和

  2. 转义会终止 JSON 字符串值的引号字符 ("),以及转义 JSON 转义字符 (\)。

关于json - Bash Shell 从文件中剪切行并使用 sed 插入到另一个文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44833981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com