小编pea*_*eak的帖子

jq 测试多个子字符串中的任何一个是否在字符串中

假设我有一个这样的项目列表:

[
  "abcdef",
  "defghi",
  "euskdh"
]
Run Code Online (Sandbox Code Playgroud)

我想编写一个过滤器,返回包含“a”、“d”或“h”的所有项目。这是我能想到的最好的:

. as $val | select(any(["a", "d", "h"]; inside($val)))
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以不使用变量来做到这一点?

iteration jq

1
推荐指数
1
解决办法
2125
查看次数

如何使用jq将此字符串转换为JSON?

如何使用jq将以下行转换为JSON格式?

payment_test_service1_api[host] HOST1
payment_test_service1_api[username] USERNAME1
payment_test_service1_api[password] PASSWORD1
Run Code Online (Sandbox Code Playgroud)

对于这种JSON格式:

"payment_test" {
    "service1" : 
    {
      "api": {
        "host": "HOST1",
        "username": "USERNAME1",
        "password": "PASSWORD1"
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

bash shell parsing json jq

1
推荐指数
1
解决办法
2066
查看次数

使用jq重塑json数据

我正在尝试重塑一个json文档,我认为使用jq很容易,但我现在没有尝试几个小时但没有成功......

(请注意,我不是jq jedi,而且doc没有帮助)

我想离开这个:

{
  "results": [
    {
      "profile": {
        "birthYear": 1900,
        "locale": "en_EN",
        "city": "Somewhere, Around",
        "timezone": "2",
        "age": 52,
        "gender": "m"
      },
      "UID": "SQSQSQerl7XSQSqSsqSQ"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

对此:

{
   "birthYear": 1900,
   "locale": "en_EN",
   "city": "Somewhere, Around",
   "timezone": "2",
   "age": 52,
   "gender": "m",
   "UID": "SQSQSQerl7XSQSqSsqSQ"
}
Run Code Online (Sandbox Code Playgroud)

我使用此过滤器获得了以下内容:.results [] .profile,.results [].UID

{
   "birthYear": 1900,
   "locale": "en_EN",
   "city": "Somewhere, Around",
   "timezone": "2",
   "age": 52,
   "gender": "m"   
}
"UID": "SQSQSQerl7XSQSqSsqSQ"
Run Code Online (Sandbox Code Playgroud)

在此先感谢您的帮助..

json data-manipulation jq

1
推荐指数
1
解决办法
180
查看次数

对一个 JSON 模板进行多项更改

我目前正在使用jq1pass CLI 尝试将随机生成的密码创建到安全笔记中。我在设置字段时遇到问题。

这是我的两个变量。我总共需要设置 8 个。

section0_section_uuid="Section_0"

section1_section_uuid="Section_1"
Run Code Online (Sandbox Code Playgroud)

这是我操作模板的命令。我首先阅读它,更改第一个标题,然后将其保存到$template. 然后我通过$templatejq

template=$(cat template.json | jq --arg uuid "$section0_section_uuid" '.sections[0].title=$uuid')

template=$($template | jq --arg uuid "$section1_section_uuid" '.sections[1].title=$uuid')

echo $template
Run Code Online (Sandbox Code Playgroud)

我收到“文件名太长”。我认为我没有正确传递修改后的模板变量。我需要对template.json文件再做 7 次修改。

编辑:

这是我试图操纵的完整模板。我必须对模板进行 12 次更改。12 个中的 10 个是我将生成的随机数。12 个中的其余 2 个将是生成的用户名。

{
  "fields": [],
  "sections": [
    {
      "fields": [
        {
          "k": "concealed",
          "n": "[CHANGE_ME]",
          "t": "ROOT_USER_PASS",
          "v": "[CHANGE_ME]"
        },
        {
          "k": "concealed",
          "n": "[CHANGE_ME]",
          "t": "DEV_USER_PASS",
          "v": "[CHANGE_ME]"
        }
      ],
      "name": "Section_[CHANGE_ME]", …
Run Code Online (Sandbox Code Playgroud)

bash templates json jq

1
推荐指数
1
解决办法
2868
查看次数

在shell中处理json时如何正确地将多个jq语句链接在一起,例如curl?

我是 jq 的新手,所以如果这不是 jq 问题或 json 问题,请指出正确的方向。我不确定正确的术语,所以我很难正确地阐明问题。

我正在使用 curl 来提取一些我想过滤掉具有特定值的键的 json。以下是一些示例 json:

{
  "id": "593f468c81aaa30001960e16",
  "name": "Name 1",
  "channels": [
    "593f38398481bc00019632e5"
  ],
  "geofenceProfileId": null
}
{
  "id": "58e464585180ac000a748b57",
  "name": "Name 2",
  "channels": [
    "58b480097f04f20007f3cdca",
    "580ea26616de060006000001"
  ],
  "geofenceProfileId": null
}
{
  "id": "58b4d6db7f04f20007f3cdd2",
  "name": "Name 3",
  "channels": [
    "58b8a25cf9f6e19cf671872f"
  ],
  "geofenceProfileId": "57f53018271c810006000001"
}
Run Code Online (Sandbox Code Playgroud)

当我运行以下命令时:

curl -X GET -H 'authorization: Basic somestring=' "https://myserver/myjson" |
  jq '.[] | {id: .id, name: .name, channels: .channels, geofenceProfileId: .geofenceProfileId}' |
  jq '.[] | select(.channels == 58b8a25cf9f6e19cf671872f)' …
Run Code Online (Sandbox Code Playgroud)

json curl pipeline jq

1
推荐指数
1
解决办法
4731
查看次数

使用jq从shell数组创建JSON数组

我们试图获得jqv1.5 64位来解析数组然后回显结果.

我们有正确的jq语法吗?

#!/bin/bash
declare -a nameArr 
nameArr=("Leia" "Darth Vader" "Anakin" "Han Solo" "Yoda")
jq -c -n  "$nameArr" 
Run Code Online (Sandbox Code Playgroud)

给出错误

jq: error: syntax error, unexpected $end (Unix shell quoting issues?) at <top-level>, line 1:
Leia,    
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)

arrays bash json jq

1
推荐指数
1
解决办法
859
查看次数

jq 在外部添加捕获组结果

例如,

输入:

    {
       "id":"abc",
       "name": "name-middlenane-lastname-1"
    },

    {
        "id":"123",
        "name": "fname-flast-2"
    }
Run Code Online (Sandbox Code Playgroud)

回复:

    {
         "id":"abc",
         "name": "name-middlename-lastname-1",
         "newkey": "name-middlename-lastname"
    },

    {
          "id":"123",
          "name": "fname-flast-2",
          "newkey": "fname-flast"
    }
Run Code Online (Sandbox Code Playgroud)

每个对象中的文件是一个字符串,其中包含由“-”连字符分隔的字符和数字。我需要从开头到起始数字的完整字符串。我不想要号码后面的任何内容。然后添加字段,其键为newkey,值应提取不带数字的字符串。因此,输出应包含旧字段和新字段。

regex json object capturing-group jq

1
推荐指数
1
解决办法
2616
查看次数

是否以 JSON 格式存储 SVG 图像?

我不知道我是否在正确的“堆栈”中询问,但目前我似乎是最合适的。还请注意,如果我错了,我会立即将问题转移到另一个堆栈。

我需要保存矢量图像(很可能是 SVG 格式)。我们正在考虑如何记住这个图像。关键是我们更喜欢只使用 JSON 文件,这意味着你必须将 SVG 图像至少转换为 Base54,但它是否无损?

另一种方法是将此 SVG 图像的本地路径保存在 JSON 文件的字段中。该图像和 JSON 文件不应通过网络发送,并且考虑到 PC 环境,从 Bas64 到 SVG 的转换不应太慢。根据您的经验,您建议做什么?

base64 svg json jq

1
推荐指数
1
解决办法
2万
查看次数

使用 jq 将 JSON 从 AWS SSM 转换为环境变量

我对此做了一些研究,感觉好像我已经完成了 80% 的工作,但由于分割其中一根字符串,我很难根据需要调整 jq 输出。

我正在尝试将 AWS SSM 的 JSON 输出转换为环境变量。

AWS命令

aws ssm get-parameters-by-path \
--path /qa/es \
--with-decryption \
--query 'Parameters[*].{Name:Name,Value:Value}' \
Run Code Online (Sandbox Code Playgroud)

输出

[
    {
        "Name": "/qa/es/AWS_ACCESS_KEY_ID",
        "Value": "ABC123"
    },
    {
        "Name": "/qa/es/AWS_SECRET_ACCESS_KEY",
        "Value": "abcdefghijkl"
    },
    {
        "Name": "/qa/es/ENDPOINT",
        "Value": "https://amazonaws.com"
    }
]
Run Code Online (Sandbox Code Playgroud)

我所需的 jq 输出,请注意,我仅在最后一个 / 之后的环境变量之后。在某些情况下,这可能是 /qa/es/something/nested/ENV_VAR

AWS_ACCESS_KEY_ID=ABC123
AWS_SECRET_ACCESS_KEY=abcdefghijkl
ENDPOINT=https://amazonaws.com
Run Code Online (Sandbox Code Playgroud)

一旦我有了这个,我就可以利用这里的答案来设置环境变量。将 JSON 导出到环境变量

我最接近的是

jq -r "map(\"\(try(.Name |= split(\"/\")))=\(.Value|tostring)\")|.[]" params.json
Run Code Online (Sandbox Code Playgroud)

这给了我

{"Name":["","qa","es","AWS_ACCESS_KEY_ID"],"Value":"ABC123"}=ABC123
{"Name":["","qa","es","AWS_SECRET_ACCESS_KEY"],"Value":"abcdefghijkl"}=abcdefghijkl
{"Name":["","qa","es","ENDPOINT"],"Value":"https://amazonaws.com"}=https://amazonaws.com
Run Code Online (Sandbox Code Playgroud)

接近,但还不够接近!有人能在这里指出正确的方向吗?

regex json environment-variables jq

1
推荐指数
1
解决办法
1754
查看次数

在 bash 中使用 jq 进行嵌套的 Json 解析

我需要解析一个 json 文件,我将 bash 脚本与 jq 绑定在一起,但没有得到预期的输出。

JSON 文件:

[
  {
    "fqdn": "my-created-lb",
    "status": "Active",
    "members": {
      "10.45.78.9:80": {
        "dc": "NA",
        "state": "enabled",
        "port": 80
      },
      "10.45.78.10:80": {
        "dc": "NA",
        "state": "enabled",
        "port": 80
      },
      "10.45.78.11:80": {
        "dc": "NA",
        "state": "enabled",
        "port": 80
      },
      "10.45.78.12:80": {
        "dc": "NA",
        "state": "enabled",
        "port": 80
      }
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要输出为:

"my-created-lb"
"10.45.78.9:80","enabled"
"10.45.78.10:80","enabled"
"10.45.78.11:80","enabled"
"10.45.78.12:80","enabled"
Run Code Online (Sandbox Code Playgroud)

我在 jq 下面尝试过,但没有得到预期的输出:

jq '.[] | .fqdn,.members,.members[].state'
Run Code Online (Sandbox Code Playgroud)

但我低于输出:

jq '.[] | .fqdn,.members,.members[].state'
Run Code Online (Sandbox Code Playgroud)

bash json nested export-to-csv jq

1
推荐指数
1
解决办法
62
查看次数