我想将带有awk
的项目推送到myArray.json
文件中,如下所示
[
item1,
item2
]
为了添加item1,我尝试过
echo -e "[\n]" > myArray.json # Create an empty JSON array with "\n"
awk -v var="item1" '/\]/ {print var} 1' myArray.json >> myArray-tmp.json
mv myArray-tmp.json myArray.json
如果我现在注释掉echo -e "[\n]" > myArray.json
行(或者有条件地跳过它),设置var="item2"
并运行脚本,item2就会添加到数组中。我想在第一行后面加一个逗号,而不是第二个。
发布于 2019-05-29 07:54:58
作为一种可能更简单的替代方案,您可以直接使用jq
。因此,如果您有json文件myArray.json
[ "item1" ]
您只需使用以下命令即可添加其他元素
jq '. + ["item2"]' myArray.json
这应该会导致
[
"item1",
"item2"
]
发布于 2019-05-29 10:43:46
jq
是一个很棒的工具,所以我接受了这个答案。这是我丑陋的方式。
[
item1
,item2
]
我需要做有条件的跳过前两行后,第一项已添加。改为运行这一行。
awk -v var="item2" '/\]/ {print ","var} 1' myArray.json >> myArray-tmp.json
发布于 2019-05-29 16:20:29
此外,还有一个简单的替代方案--基于行走路径的unix实用程序,用于操作json。
在jtc
中,有一个选项可以将更改直接应用到源文件- -f
(如果没有它,结果将只打印到控制台):
bash $ jtc myArray.json
[
"item1"
]
bash $
bash $ jtc -f -i'"item2"' myArray.json
bash $
bash $ jtc myArray.json
[
"item1",
"item2"
]
bash $
注意:插入的元素必须是有效的JSON -因此双引号(”item2”
-构成有效的JSON字符串)并保留它们(转义外壳内插)-参数周围有外部单引号
JSON披露:我是用于PS>操作的jtc
- shell cli工具的创建者
https://stackoverflow.com/questions/56351164
复制相似问题