首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将面向Bash/Unix行的管道包装在json结构中

将面向Bash/Unix行的管道包装在json结构中
EN

Stack Overflow用户
提问于 2019-12-27 03:56:39
回答 2查看 71关注 0票数 1

如何将其转换为

代码语言:javascript
复制
http://www.google.co.uk
http://www.reddit.com
http://www.ebay.com

如果可能的话,使用jq

代码语言:javascript
复制
{ "listing": "http://www.google.co.uk" }
{ "listing": "http://www.reddit.com" }
{ "listing": "http://www.ebay.com" }

我尝试过的:

代码语言:javascript
复制
$ echo "    http://www.google.co.uk
>     http://www.reddit.com
>     http://www.ebay.com"  |  jq --slurp --raw-input 'split("\n")[:-1] | map({ listing: .})'
[
  {
    "listing": "    http://www.google.co.uk"
  },
  {
    "listing": "    http://www.reddit.com"
  },
  {
    "listing": "    http://www.ebay.com"
  }
]

大括号和其他东西不能单独放在一行中,因为我正在做“面向行的处理”,每一行代表一个“行”数据。

EN

回答 2

Stack Overflow用户

发布于 2019-12-27 04:13:08

为每条输入行创建对象:

代码语言:javascript
复制
echo -e "l1\nl2\nl3" | jq -c -R '{"listing": .}'

输出:

代码语言:javascript
复制
{"listing":"l1"}
{"listing":"l2"}
{"listing":"l3"}
票数 2
EN

Stack Overflow用户

发布于 2019-12-27 04:14:48

这应该可以做到:

代码语言:javascript
复制
jq -cR '{listing: .}'

这假设在输入行的开头没有多余的空格。如果要删除前导空格和尾随空格,则可以使用此复合过滤器:

代码语言:javascript
复制
sub("^ +";"") | sub(" +$";"")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59492888

复制
相关文章

相似问题

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