我们有以下示例文件(非常长的文件,这是一个简短的示例)
"request_status" : "FAILED"
{
"href" : "http://localhost:8080/api/v1/clusters/sys41/requests/333",
"Requests" : {
"cluster_name" : "sys41",
"id" : 333,
"request_status" : "COMPLETED"
}
},
{
"href" : "http://localhost:8080/api/v1/clusters/sys41/requests/334",
"Requests" : {
"cluster_name" : "sys41",
"id" : 334,
"request_status" : "FAILED"
}
},
{
"href" : "http://localhost:8080/api/v1/clusters/sys41/requests/335",
"Requests" : {
"cluster_name" : "sys41",
"id" : 335,
"request_status" : "FAILED"
}
},
{
"href" : "http://localhost:8080/api/v1/clusters/sys41/requests/336",
"Requests" : {
"cluster_name" : "sys41",
"id" : 336,
"request_status" : "COMPLETED"
}
}
如何在匹配的行之后打印行,"id" : $num
例如
num=335
之后怎么接线
"id" : $num
预期产出
"request_status" : "FAILED"
假设 JSON 文件是一大堆对象,例如
(注意换行符不重要,对象中键的顺序也不重要)然后,以下
jq
命令将获取对应于的request_status
条目:id
$num
它通过
Requests
从每个对象中挑选出所有条目并在id
. 对于通过过滤器的那些,它会提取request_status
.使其输出原始数据而不是 JSON的
-r
选项(没有它会被双引号引起来)。jq
FAILED
奖励材料:
给定 shell 变量
num
集等于335
:我从
grep
方便-A
的-B
, 和-C
选项中获得了很多好处,我使用的助记符是“After”、“Before”和“Context”。grep -A n 'pattern' file
除了匹配行本身之外,还将显示模式匹配后的n行A。grep -C n 'pattern' file
除了匹配行本身之外,还将在模式匹配之前显示n行B。grep -C n 'pattern' file
除了匹配行本身之外,还将显示模式匹配之前和之后(即C上下文)的n行。或者
或者
或者
或以上任何一种,但不需要
"id" : "
字符串的一部分,格式为: