首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Shell JSON循环到JSON

Shell JSON循环到JSON
EN

Stack Overflow用户
提问于 2016-12-11 01:54:06
回答 2查看 481关注 0票数 0

我有一个带两个变量的while循环,我必须合并成一个JSON片段,如下所示:

代码语言:javascript
复制
#!/bin/bash
while read -r from to
do
    # BONUS: Solution would ideally require no quoting at this point
    echo { \"From\": \"$from\", \"To\": \"$to\" } 
done << EOF
foo bar
what ever
EOF

它当前输出无效的JSON:

代码语言:javascript
复制
{ "From": "foo", "To": "bar" }
{ "From": "what", "To": "ever" }

最简单的方法是创建有效的JSON,如:

代码语言:javascript
复制
[
{ "From": "foo", "To": "bar" },
{ "From": "what", "To": "ever" }
]

我看了看jq,但我想不出怎么做。理想情况下,我不是looking to do it in shell,因为我觉得添加逗号有点难看。

EN

Stack Overflow用户

发布于 2016-12-11 03:29:29

下面是一个所有jq解决方案,该解决方案假定"From“和"To”值与您的示例完全相同:

代码语言:javascript
复制
jq -R -n '[inputs | split(" ") | {From: .[0], To: .[1]}]'

您可能希望使用gsub/2处理其他空间。

如果您的jq没有inputs,那么您可以使用以下咒语:

代码语言:javascript
复制
jq -R -s 'split("\n")
  | map(select(length>1) | split(" ") | {From: .[0], To: .[1]})'

或者,您可以将时间循环的输出输送到jq -s中。

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

https://stackoverflow.com/questions/41082241

复制
相关文章

相似问题

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