来自json文件的Grep命令-Bash脚本

来自json文件的Grep命令-Bash脚本,json,bash,Json,Bash,我的json文件包含以下内容: { 水果:{ 柜台:1,, 协议:[ { id:100, 姓名:lemon, 类别:柑橘 }, { id:350, 姓名:Orange, 类别:柑橘 }, { id:150, 名称:莱姆, 类别:柑橘 } ] } } 我期待的输出如下 Fruits:lemon:citrus Fruits:Orange:citrus Fruits:lime:citrus 易于使用jq: 易于使用jq: jq的答案更好。如果您不能使用jq,仍然发布Ruby解决方案,但它不够优雅:

我的json文件包含以下内容:

{ 水果:{ 柜台:1,, 协议:[ { id:100, 姓名:lemon, 类别:柑橘 }, { id:350, 姓名:Orange, 类别:柑橘 }, { id:150, 名称:莱姆, 类别:柑橘 } ] } } 我期待的输出如下

Fruits:lemon:citrus
Fruits:Orange:citrus
Fruits:lime:citrus
易于使用jq:

易于使用jq:

jq的答案更好。如果您不能使用jq,仍然发布Ruby解决方案,但它不够优雅:

ruby -e '
  require "json";
  l="";
  ARGF.each { |x| l+=x };
  obj=JSON.parse(l);
  obj["Fruits"]["protocols"].each { |x| puts "Fruits:#{x["name"]}:#{x["category"]}" }
'
以下是完整的示例:

echo '{"Fruits":{"counter":1,"protocols":[{"id":"100","name":"lemon","category":"citrus"},{"id":"350","name":"Orange","category":"citrus" },{"id":"150","name":"lime","category":"citrus"}]}}' \
| ruby -e 'require "json";l="";ARGF.each { |x| l+=x } ; obj=JSON.parse(l) ; obj["Fruits"]["protocols"].each { |x| puts "Fruits:#{x["name"]}:#{x["category"]}" }'
输出:

Fruits:lemon:citrus
Fruits:Orange:citrus
Fruits:lime:citrus
jq的答案更好。如果您不能使用jq,仍然发布Ruby解决方案,但它不够优雅:

ruby -e '
  require "json";
  l="";
  ARGF.each { |x| l+=x };
  obj=JSON.parse(l);
  obj["Fruits"]["protocols"].each { |x| puts "Fruits:#{x["name"]}:#{x["category"]}" }
'
以下是完整的示例:

echo '{"Fruits":{"counter":1,"protocols":[{"id":"100","name":"lemon","category":"citrus"},{"id":"350","name":"Orange","category":"citrus" },{"id":"150","name":"lime","category":"citrus"}]}}' \
| ruby -e 'require "json";l="";ARGF.each { |x| l+=x } ; obj=JSON.parse(l) ; obj["Fruits"]["protocols"].each { |x| puts "Fruits:#{x["name"]}:#{x["category"]}" }'
输出:

Fruits:lemon:citrus
Fruits:Orange:citrus
Fruits:lime:citrus

不要使用grep来处理JSON。使用jqDon不要使用grep来处理JSON。使用jqNice!,我真的很喜欢jq,使用shell解析json文件变得很容易。谢谢。不幸的是,jq不能安装在我的生产环境中。还有其他选择吗?@apoonkun真遗憾,因为解决方案非常好。如果你有Ruby,你可以试试我的答案。也许这对您有帮助。@apoonkun您也可以使用perl或python,但实际上,尝试在不使用jq的情况下执行处理JSON的shell脚本是个坏主意。即使在git bash中,您也可以安装jq:-很好!,我真的很喜欢jq,使用shell解析json文件变得很容易。谢谢。不幸的是,jq不能安装在我的生产环境中。还有其他选择吗?@apoonkun真遗憾,因为解决方案非常好。如果你有Ruby,你可以试试我的答案。也许这对您有帮助。@apoonkun您也可以使用perl或python,但实际上,尝试在不使用jq的情况下执行处理JSON的shell脚本是个坏主意。即使在git bash中,您也可以安装jq:-