使用grep解析json文件中的密钥并获取值
有人可以建议我如何在解析示例json文本后获得值45,如下所示:使用grep解析json文件中的密钥并获取值,json,bash,awk,sed,Json,Bash,Awk,Sed,有人可以建议我如何在解析示例json文本后获得值45,如下所示: .... "test": 12 "job": 45 "task": 11 ..... 请注意,我知道像jq和其他工具,但这需要安装它 我希望使用grep、awk或sed命令执行此操作。您可以使用grep-oP(PCRE): \K用于重置先前匹配的数据。您可以使用grep-oP(PCRE): \K用于重置先前匹配的数据。使用awk,如果您只想打印它: awk -F ':[ \t]*' '/^.*"job"/ {print $2}'
....
"test": 12
"job": 45
"task": 11
.....
请注意,我知道像jq和其他工具,但这需要安装它
我希望使用grep、awk或sed命令执行此操作。您可以使用
grep-oP
(PCRE):
\K
用于重置先前匹配的数据。您可以使用grep-oP
(PCRE):
\K
用于重置先前匹配的数据。使用awk
,如果您只想打印它:
awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename
上面的命令匹配在行首有“job”
的任何行,然后打印该行的第二列。awk选项-F
用于将列分隔符设置为:
,后跟任意数量的空格
或选项卡
如果要将此值存储在bash变量job\u val
中:
job_val=$(awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename)
使用awk
,如果您只想打印它:
awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename
上面的命令匹配在行首有“job”
的任何行,然后打印该行的第二列。awk选项-F
用于将列分隔符设置为:
,后跟任意数量的空格
或选项卡
如果要将此值存储在bash变量job\u val
中:
job_val=$(awk -F ':[ \t]*' '/^.*"job"/ {print $2}' filename)
为任务使用专门的工具,如jq
:
你的文件
看起来像
[
{
"test": 12,
"job": 45,
"task": 11
}
]
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
下面的东西可以让你回家
jq ".[].job" file
你的文件
看起来像
[
{
"test": 12,
"job": 45,
"task": 11
}
]
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
下面
将带您回家。使用专门的工具,如jq
完成任务:
你的文件
看起来像
[
{
"test": 12,
"job": 45,
"task": 11
}
]
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
下面的东西可以让你回家
jq ".[].job" file
你的文件
看起来像
[
{
"test": 12,
"job": 45,
"task": 11
}
]
{
"stuff" :{
.
.
"test": 12,
"job": 45,
"task": 11
.
.
}
}
下面
安装jq
并不难:它是一个二进制文件(没有外部依赖项),可以复制到任何目录中。为什么不使用像jq
这样的专用工具来完成这项工作,jq
是sed
forjson
对我来说也不是有效的json:/is Python,安装在服务器上的PHP或Perl?安装jq
并不难:它是一个可以复制到任何目录中的单一二进制文件(没有外部依赖项)。为什么不使用像jq
这样的专用工具来完成这项工作呢,jq
是sed
forjson
对我来说也不是有效的json:/Python、PHP或Perl安装在服务器上吗?json文件中的键不太可能从行的开头开始。虽然使用grep/sed/awk确实可以完成一项简单的任务,但我强烈推荐jq
。安装它并不难——就像OP已经声明的那样,他不能/不会安装jq
,并要求使用标准的UNIX工具来解决问题。我使用很多没有安装任何工具许可的机器,也许OP也是如此,idk。我还使用了很多机器,我必须快速地跳上去做一些事情,因此我也倾向于避免使用非标准工具的解决方案。我将在前面添加一些可选的空白,以防OPs real输入与他发布的输入格式不符。当然,对于一个简短的交互式黑客来说,这可能已经足够好了。但是对于一个脚本或程序来说不是。如果OP不能使用jq
,他可以使用PHP、Python、Perl等脚本语言。几乎可以肯定安装了能够处理json的东西。如果安装了jq,那么他可能有php、pyhon、perl、,但如果不是,那么就没有理由认为其他非标准工具是,如果OP不能安装jq,那么他几乎肯定不能安装任何其他工具。json文件中的密钥不太可能从行的开头开始。虽然使用grep/sed/awk确实可以完成一项简单的任务,但我强烈推荐jq
。安装它并不难——就像OP已经声明的那样,他不能/不会安装jq
,并要求使用标准的UNIX工具来解决问题。我使用很多没有安装任何工具许可的机器,也许OP也是如此,idk。我还使用了很多机器,我必须快速地跳上去做一些事情,因此我也倾向于避免使用非标准工具的解决方案。我将在前面添加一些可选的空白,以防OPs real输入与他发布的输入格式不符。当然,对于一个简短的交互式黑客来说,这可能已经足够好了。但是对于一个脚本或程序来说不是。如果OP不能使用jq
,他可以使用PHP、Python、Perl等脚本语言。可以处理json的东西几乎肯定安装了。如果安装了jq,那么他可能会有php、pyhon、perl等。但是如果不是,那么就没有理由认为其他任何非标准工具是,如果OP不能安装jq,那么他几乎肯定不能安装任何其他工具。