假设我有一个这样的项目列表:
[
"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)
有没有什么方法可以不使用变量来做到这一点?
如何使用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) 我正在尝试重塑一个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)
在此先感谢您的帮助..
我目前正在使用jq1pass CLI 尝试将随机生成的密码创建到安全笔记中。我在设置字段时遇到问题。
这是我的两个变量。我总共需要设置 8 个。
section0_section_uuid="Section_0"
section1_section_uuid="Section_1"
Run Code Online (Sandbox Code Playgroud)
这是我操作模板的命令。我首先阅读它,更改第一个标题,然后将其保存到$template. 然后我通过$template成jq
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) 我是 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) 我们试图获得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) 例如,
输入:
{
"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,值应提取不带数字的字符串。因此,输出应包含旧字段和新字段。
我不知道我是否在正确的“堆栈”中询问,但目前我似乎是最合适的。还请注意,如果我错了,我会立即将问题转移到另一个堆栈。
我需要保存矢量图像(很可能是 SVG 格式)。我们正在考虑如何记住这个图像。关键是我们更喜欢只使用 JSON 文件,这意味着你必须将 SVG 图像至少转换为 Base54,但它是否无损?
另一种方法是将此 SVG 图像的本地路径保存在 JSON 文件的字段中。该图像和 JSON 文件不应通过网络发送,并且考虑到 PC 环境,从 Bas64 到 SVG 的转换不应太慢。根据您的经验,您建议做什么?
我对此做了一些研究,感觉好像我已经完成了 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)
接近,但还不够接近!有人能在这里指出正确的方向吗?
我需要解析一个 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)