我有一个Json和grep查询:-
[
{
"name":"Jon",
"id":123
},
{
"name":"Ray",
"id":1234
},
{
"name":"Abraham",
"id":12345
}
]
如何从这个json中提取名称,其中id匹配说1234,可以是随机的,使用grep或sed?
我建议使用jq
,但如果你想使用grep尝试
grep -B1 'id.*1234' < input_file | grep name
from man page
-B num, --before-context=num Print num lines of leading context before each match. See also the -A and -C options.
请建议使用jq命令
我冒昧地答应你的要求。
jq -r '.[]|select(.id==1234).name' file
.[]
-迭代数组元素select(.id==1234)
- filter element with desired id.name
-提取物名称- 选项
-r
会使名称不加引号。