使用grep解析json文件中的键并获取值

时间:2016-08-10 16:17:48

标签: json bash awk sed

在解析示例json文本后,有人可以建议我如何获得值45,如下所示:

....
"test": 12
"job": 45
"task": 11
.....

请注意,我知道jq等工具,但这需要安装。

我希望使用grep,awk或sed命令执行此操作。

4 个答案:

答案 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用于将列分隔符设置为:,后跟任意数量的spacestabs

如果要将此值存储在bash变量job_val中:

job_val=$(awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename)