gpt4 book ai didi

shell - 查找单词并替换为文件中的单词

转载 作者:行者123 更新时间:2023-12-01 23:12:45 24 4
gpt4 key购买 nike

我的任务是创建一个配置文件。配置文件是一个 JSON 文件。下面的例子

"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}

随着 json 的“style”属性的改变重复配置。所以我要将上面的文字复制 50 遍。然后我想用从另一个逗号分隔文件输入的不同样式替换“样式”属性,如下所示。

bold,italic,cryptic

然后输出将是

"text": {
"data": "Click Here",
"size": 36,
"style": "bold",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
"text": {
"data": "Click Here",
"size": 36,
"style": "italic",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}
"text": {
"data": "Click Here",
"size": 36,
"style": "cryptic",
"name": "text1",
"hOffset": 250,
"vOffset": 100,
"alignment": "center",
"onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
}

有更简单的方法吗?

最佳答案

gensub 使用 GNU awk 的另一种解决方案:

awk -v RS= '
NR==FNR { n = split($0, styles, /,/); next }
{
for (i=1; i<=n; i++) {
style = "\"" styles[i] "\""
print gensub (/(["]style["]: ).[^,]+/, "\\1" style, "G", $0);
}
}
' style.txt config.file

您从一个名为 style.txt 的文件开始,其中包含所需样式的逗号分隔值。您将它们存储在一个数组中。您继续迭代您的配置文件并换出样式段并将其替换为新模式。

我不愿承认使用 Perl、Ruby 或 Python 的 JSON 解析器可以更好地解析 JSON,但将此作为一次性选项发布,因为您无法控制配置文件。

关于shell - 查找单词并替换为文件中的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36853709/

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