在解析示例json文本后,有人可以建议我如何获得值45,如下所示:
....
"test": 12
"job": 45
"task": 11
.....
请注意,我知道jq等工具,但这需要安装。
我希望使用grep,awk或sed命令执行此操作。
答案 0 :(得分:2)
awk -F'[[:space:]]*:[[:space:]]*' '/^[[:space:]]*"job"/{ print $2 }'
sed -n 's/^[[:space:]]*"job"[[:space:]]*:[[:space:]]*//p'
答案 1 :(得分:1)
您可以使用Me.NewRecord
(PCRE):
grep -oP
grep -oP '"job"\s*:\s*\K\d+' file
45
用于重置以前匹配的数据。
答案 2 :(得分:1)
使用jq
等专用工具执行任务:
你的file
看起来像是
[
{
"test": 12,
"job": 45,
"task": 11
}
]
下面的东西会让你回家
jq ".[].job" file
你的file
看起来像是
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
以下
jq ".stuff.job" file
会帮你回家。
答案 3 :(得分:0)
使用awk
,如果您只想打印它:
awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename
上面的命令匹配行开头有"job"
的任何行,然后打印该行的second
列。 awk选项-F
用于将列分隔符设置为:
,后跟任意数量的spaces
或tabs
。
如果要将此值存储在bash变量job_val
中:
job_val=$(awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename)