首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jq拆分字符串和映射

jq拆分字符串和映射
EN

Stack Overflow用户
提问于 2021-01-05 18:22:54
回答 2查看 561关注 0票数 1

我得到了下面的字符串,我想把它转换成一个json数组。

代码语言:javascript
复制
   2 email1@myDomain.com
   1 email2@myDomain.com
   3 email3@myDomain.com

这是jq命令:

代码语言:javascript
复制
jq --slurp --raw-input 'split("\n")[:-1] | map({email: ., free: 0, used: 0})'

输出:

代码语言:javascript
复制
[
  {
    "email": "   2 email1@myDomain.com",
    "free": 0,
    "used": 0
  },
  {
    "email": "   1 email2@myDomain.com",
    "free": 0,
    "used": 0
  },
  {
    "email": "   3 email3@myDomain.com",
    "free": 0,
    "used": 0
  }
]

所需输出:

代码语言:javascript
复制
[
  {
    "email": "email1@myDomain.com",
    "free": 2,
    "used": 0
  },
  {
    "email": "email2@myDomain.com",
    "free": 1,
    "used": 0
  },
  {
    "email": "email3@myDomain.com",
    "free": 3,
    "used": 0
  }
]

有人能帮帮忙吗?我需要在空格上拆分字符串,我知道这是可能的,但我不知道确切的语法。

EN

回答 2

Stack Overflow用户

发布于 2021-01-05 18:38:07

我想通了。

代码语言:javascript
复制
jq --slurp --raw-input 'split("\n")[:-1] | map({email: split(" ")[1], free: split(" ")[0], used: 0})'
票数 2
EN

Stack Overflow用户

发布于 2021-01-06 04:20:17

在可能的情况下避免“发出声音”几乎总是更好的,而且只在空格上拆分一次会更有效率:

代码语言:javascript
复制
jq -R '
  [splits(" +")]
  | {email: .[1],
     free:  (.[0] | tonumber),
     used: 0 }
' input.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65577049

复制
相关文章

相似问题

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