gpt4 book ai didi

json - 使用命令行工具删除尾随的 json 逗号

转载 作者:行者123 更新时间:2023-11-29 09:42:02 26 4
gpt4 key购买 nike

我想从 json 中删除尾随逗号,

{
"key1": "value1",
"object": {
"key2": "value2", // <- remove comma
},
"key3": "value3", // <- remove comma
}

我想到了,

tr -d '\n' | \
sed -E 's:,(\s*}):\1:g' | \
jq .

它有效,但我想在 sed 中完全实现它。

我想到了,

sed -E '/,\s*$/ { N; s:,\s*(\n\s*},?):\1: }'

它适用于上述输入但失败

{
"key1": "value1",
"object": {
"key2": "value2",
},
"key3": "value3",
"key4": "value4", // <- remove comma
}

as N 读取下一行并从下一行重新开始。

// output sed -E '/,\s*$/ { N;l }' using l/look command
{
"key1": "value1",\n "object": {$
"key1": "value1",
"object": {
"key2": "value2",\n },$
"key2": "value2",
},
"key3": "value3",\n "key4": "value4",$
"key3": "value3",
"key4": "value4",
}

更新:

添加另一个测试示例:

{
"key1": "value1",
"object1": {
"object2": {
"key2": "value2"
},
},
"key3": "value3",
}

更新:

这对我投入的任何东西都有效。

sed -E -n 'H; x; s:,(\s*\n\s*}):\1:; P; ${x; p}' | \
sed '1 d'

解释:

sed -E -n 'H; x; P; ${x; p}'

-n 'H; x' 将每一行附加到模式空间中的下一行(最后一行除外,它只是用 ${x; p} 打印)

s:,(\s*\n\s*}):\1:;

删除模式空间中的尾随逗号。

最佳答案

由于输入似乎是 JSON 的某种扩展,您可以使用专用于此类扩展的命令行工具。例如:

$ hjson -j < input.txt

或:

$ any-json --input-format=hjson input.txt

两种情况下的输出

{
"key1": "value1",
"object": {
"key2": "value2"
},
"key3": "value3"
}

关于json - 使用命令行工具删除尾随的 json 逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53201028/

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