您能提示一下如何通过 jq 在数组对象中间插入新元素吗?
1.json 文件:-
[ {
"name": "Dependencies",
"asyncInstallation": false,
"failOnError": true,
"yamls": [
"dependency.yaml",
]
},
{
"name": "Management Configuration",
"asyncInstallation": false,
"failOnError": true,
"yamls": [
"mgmt-job.yaml"
]
},
{
"name": "Data Configuration",
"asyncInstallation": false,
"failOnError": true,
"yamls": [
"data-job.yaml"
]
},
{
"name": "Tools",
"asyncInstallation": true,
"failOnError": false,
"yamls": [
"tools-job.yaml"
]
}
]
Run Code Online (Sandbox Code Playgroud)
我想在管理配置后插入以下文本。
{
"name": "NEW Configuration",
"asyncInstallation": false,
"failOnError": true,
"yamls": [
"newfile.yaml"
]
},
Run Code Online (Sandbox Code Playgroud)
您能否建议我们如何使用 jq 或 sed 来做?
谢谢萨拉瓦南
我有这个JSON:
{"item":2, "url":"domain/house/23/bedroom"}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用jq获取此新的JSON:
{"item":2, "number":"23", "room":"bedroom"}
Run Code Online (Sandbox Code Playgroud)
可以在jq中这样做吗?第一步,我尝试使用捕获功能来捕获“ / house /”之后的子字符串,但是它不起作用:
cat myjson.json | jq -c '{item:.item,substring:(.url | capture("/house/.*").substring)}'
Run Code Online (Sandbox Code Playgroud)
有没有办法提取两个值并将它们放在两个不同的字段中?
如果下一行与模式匹配,我有删除下一行的问题。例如 :
define service{
host_name A
notification_period F
}
define service{
host_name A
notification_period metrologie
notification_period F
}
Run Code Online (Sandbox Code Playgroud)
我检查模式计量。如果下一行包含notification_period,我想删除行notification_period F。
我尝试使用命令 sed '/metrologie/{h;d;};/notification_period/{x;!d;}' $file
但它将字符串转换为:
define service{
host_name A
}
define service{
host_name A
notification_period metrologie
}
Run Code Online (Sandbox Code Playgroud)
我想要这个输出:
define service{
host_name A
notification_period F
}
define service{
host_name A
notification_period metrologie
}
Run Code Online (Sandbox Code Playgroud) 我正在使用类似于以下的 JSON 文件:
{ "Response" : {
"TimeUnit" : [ 1576126800000 ],
"metaData" : {
"errors" : [ ],
"notices" : [ "query served by:1"]
},
"stats" : {
"data" : [ {
"identifier" : {
"names" : [ "apiproxy", "response_status_code", "target_response_code", "target_ip" ],
"values" : [ "IO", "502", "502", "7.1.143.6" ]
},
"metric" : [ {
"env" : "dev",
"name" : "sum(message_count)",
"values" : [ 0.0]
} ]
} ]
} } }
Run Code Online (Sandbox Code Playgroud)
我的目标是显示标识符和值的映射,例如:
apiproxy=IO
response_status_code=502
target_response_code=502
target_ip=7.1.143.6
Run Code Online (Sandbox Code Playgroud)
我已经能够解析名称和值 …
我使用 awk 来过滤上一个命令 (docker image ls) 返回的输出,该命令是制表符分隔的列。
我想打印前两列,中间有一个 : 。
我尝试过的:
docker image ls | awk '{ print $1\:$2}'
但无论我如何尝试打印 $1 和 $2 我仍然得到
awk: syntax error at source line 1
context is
{ print $1 >>> \ <<< \ $2}
awk: illegal statement at source line 1
Run Code Online (Sandbox Code Playgroud)
如何在输出中使用 : ?
谢谢!
我是首发。我有一个下面的文件,其中有 4 列;用管道标志隔开。
test.unl
XCS|10|20|20200505|
AWX|20|10|20200606|
WSX|20|10|20200517|
RFV|20|10|20200520|
TGB|10|20|20200609|
Run Code Online (Sandbox Code Playgroud)
我需要写一个命令,如果第 2 列是 10,第 3 列是 20 然后从最后一列减去当前日期,如果日期之间的差异大于 30,则在文件中打印整行。
我正在运行下面的命令,它给了我错误。
more testfile.unl | awk -F '|' '{if(($2==10 && $3==20) && (((date -d "now" +%s)-(date -d "print$4" +%s)/86400))>>30) print$0}' >> File2.unl
Run Code Online (Sandbox Code Playgroud)
以下是我在运行命令时收到的错误:
awk: {if(($2==10 && $3==20) && ((date -d "print$4" +%s)-(date -d "now" +%s)/86400)>>30) print$0}
awk: ^ syntax error
awk: {if(($2==10 && $3==20) && ((date -d "print$4" +%s)-(date -d "now" +%s)/86400)>>30) print$0}
awk: ^ syntax error
awk: {if(($2==10 && $3==20) && ((date …
Run Code Online (Sandbox Code Playgroud) 我想查找几个文件名,有时在我的输入中指定通配符。下面是我所拥有的简化。假设v
数组将从文件或其他任何东西生成
#!/bin/bash
from_date=2020-05-17
to_date=2020-06-17
v=('-name "*a*"' '-o' '-name "*b*"')
find . "${v[@]}" -newermt "$from_date" ! -newermt "$to_date"
Run Code Online (Sandbox Code Playgroud)
这会产生错误:
find: unknown predicate `-name "*a*"'
有什么办法可以让它发挥作用吗?
我有以下任务:
匹配所有以数字结尾的行,然后反转这些数字
例子:
romarana:qwerty12543
asdewfpwk:asdqwe312
asdj:asbd
asdewfpwk:strwtwe129
ooasodo:asbdjahj
Run Code Online (Sandbox Code Playgroud)
应该:
romarana:qwerty34521
asdj:asbd
asdewfpwk:asdqwe213
asdewfpwk:strwtwe921
ooasodo:asbdjahj
Run Code Online (Sandbox Code Playgroud)
我试过的:
romarana:qwerty12543
asdewfpwk:asdqwe312
asdj:asbd
asdewfpwk:strwtwe129
ooasodo:asbdjahj
Run Code Online (Sandbox Code Playgroud)
注意:您现在可以忽略不以数字结尾的行。
注意:您可以使用 awk、grep 或任何其他工具
我有一个包含多个对象 ID 的 json 文件,我需要一个根据命名约定排除不同 ID 的查询。这些本质上是“或”。我以为我已经有了这个查询,但它们仍然出现在输出中。
如果我单独与它们一起运行查询,我可以让它工作,但我需要添加一个大列表。
作品
cat file.json | jq '.interface[] | select(.description | contains ("VLL") | not )'
Run Code Online (Sandbox Code Playgroud)
不工作
cat file.json | jq '.interface[] | select(.description | contains ("VLL"|"2002089"|"otherstuff" ) | not )'
Run Code Online (Sandbox Code Playgroud)
我尝试了几种使用逗号和引用的不同方法,但没有成功。
我离得还远吗?
我还计划在 bash 脚本中运行它,如果有帮助的话(可能会变得更糟)
谢谢
拥有 docker ps -a
我想匹配NAMES
VERSION
和STATUS
。
docker ps -a --format "{{.Image}}\t{{.Status}}" | awk -F$"\t" '{printf "%s|%s\n", $1, $2}'
Run Code Online (Sandbox Code Playgroud)
输出:
registry.com/project/glass/glass_front:2.2.15.4|Up 6 days
registry.com/project/glass/glass_proxy:2.2.15.4|Up 6 days
registry.com/project/glass/glass_modeles_front:2.1.5.2|Up 6 days
Run Code Online (Sandbox Code Playgroud)
我怎样才能修改我的命令来做到这一点:
glass_front | 2.2.15.4 | Up 6 days
glass_proxy | 2.2.15.4 | Up 6 days
glass_modeles_front| 2.1.5.2 | Up 6 days
Run Code Online (Sandbox Code Playgroud)