簡體   English   中英

Grep 命令來自 json 文件 - Bash 腳本

[英]Grep command from json file - Bash scripting

我的 json 文件有以下內容:

{
  "Fruits": {
    "counter": 1,
    "protocols": [
      {
        "id": "100",
        "name": "lemon",
        "category": "citrus"
      },
      {
        "id": "350",
        "name": "Orange",
        "category": "citrus"
      },
      {
        "id": "150",
        "name": "lime",
        "category": "citrus"
      }
    ]
  }
}

我期待 output 如下

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

jq很容易做到:

$ jq -r '.Fruits.protocols[] | "Fruits:\(.name):\(.category)"' input.json
Fruits:lemon:citrus
Fruits:Orange:citrus
Fruits:lime:citrus

jq的答案更好。 仍然發布 Ruby 解決方案(如果您不能使用 jq),但它不太優雅:

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"]}" }'

Output:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM