首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用awk在类似JSON数组的文件中有条件地插入一行

使用awk在类似JSON数组的文件中有条件地插入一行
EN

Stack Overflow用户
提问于 2019-05-29 07:14:24
回答 3查看 534关注 0票数 1

我想将带有awk的项目推送到myArray.json文件中,如下所示

代码语言:javascript
复制
[
 item1,
 item2
]

为了添加item1,我尝试过

代码语言:javascript
复制
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就会添加到数组中。我想在第一行后面加一个逗号,而不是第二个。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-29 07:54:58

作为一种可能更简单的替代方案,您可以直接使用jq。因此,如果您有json文件myArray.json

代码语言:javascript
复制
[ "item1" ]

您只需使用以下命令即可添加其他元素

代码语言:javascript
复制
jq '. + ["item2"]' myArray.json

这应该会导致

代码语言:javascript
复制
[
  "item1",
  "item2"
]
票数 2
EN

Stack Overflow用户

发布于 2019-05-29 10:43:46

jq是一个很棒的工具,所以我接受了这个答案。这是我丑陋的方式。

代码语言:javascript
复制
[
 item1
 ,item2
]   

我需要做有条件的跳过前两行后,第一项已添加。改为运行这一行。

代码语言:javascript
复制
awk -v var="item2" '/\]/ {print ","var} 1' myArray.json >> myArray-tmp.json
票数 1
EN

Stack Overflow用户

发布于 2019-05-29 16:20:29

此外,还有一个简单的替代方案--基于行走路径的unix实用程序,用于操作json。

jtc中,有一个选项可以将更改直接应用到源文件- -f (如果没有它,结果将只打印到控制台):

代码语言:javascript
复制
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工具的创建者

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56351164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档