জকিউ মুদ্রণ কী এবং সাব-অবজেক্টে সকলের জন্য মান


13

আমি এই কিউ / এটিকে একটি সামগ্রীর সমস্ত কী মুদ্রণের সমাধান সহ পেয়েছি :

jq -r 'keys[] as $k | "\($k), \(.[$k] | .ip)"' 

আমার ক্ষেত্রে আমি উপরের সম্পাদনা করতে চাই তবে একটি সাব-অবজেক্টে:

jq -r '.connections keys[] as $k | "\($k), \(.[$k] | .ip)"'

এটি করার উপযুক্ত বাক্য গঠন কী?

উত্তর:


21

কাজ করার জন্য কেবল পাইপ keys:

নমুনা input.json:

{
    "connections": {
        "host1": { "ip": "10.1.2.3" },
        "host2": { "ip": "10.1.2.2" },
        "host3": { "ip": "10.1.18.1" }
    }
}

jq -r '.connections | keys[] as $k | "\($k), \(.[$k] | .ip)"' input.json

আউটপুট:

host1, 10.1.2.3
host2, 10.1.2.2
host3, 10.1.18.1

7
keysকীগুলি বাছাই করে, তাই এটি উল্লেখ করার মতো যে keys_unsortedএটির নয়।
শিখর

1
@peak, অপ লিখেছিলেন, " আমি এই পাওয়া stackoverflow.com/questions/34226370/... ... যেখানে গৃহীত উত্তর পরিষ্কারভাবে বলেছেন" " keysসাজানো ক্রম কী নাম উত্পাদন করে; আপনি যদি তাদের মূল অনুক্রমে চান, ব্যবহারkeys_unsorted "। সুতরাং ওপি সে সম্পর্কে সচেতন এবং keysসচেতনভাবে নির্বাচন করেছে ।
রোমানপেরেখারেস্ট

3
মন্তব্যটি এই প্রশ্নোত্তর জুড়ে আসা অন্যদের জন্য বোঝানো হয়েছিল।
শিখর

0

ভার রফতানি করার জন্য আরও জেনেরিক বাশ ফাংশন (ইন্টারপোলেশন সহ):

#
#------------------------------------------------------------------------------
# usage example:
# doExportJsonSectionVars cnf/env/dev.env.json '.env.virtual.docker.spark_base'
#------------------------------------------------------------------------------
doExportJsonSectionVars(){

   json_file="$1"
   shift 1;
   test -f "$json_file" || echo "the json_file: $json_file does not exist !!! Nothing to do" && exit 1

   section="$1"
   test -z "$section" && echo "the section in doExportJsonSectionVars is empty !!! nothing to do !!!" && exit 1
   shift 1;

   while read -r l ; do
      eval $l ;
   done < <(cat "$json_file"| jq -r "$section"'|keys_unsorted[] as $key|"export \($key)=\(.[$key])"')
}

উদাহরণ তথ্য

cat cnf/env/dev.env.json
{
  "env": {
    "ENV_TYPE": "dev",
      "physical": {
        "var_name": "var_value"
      },
      "virtual": {
          "docker": {
            "spark_base": {
                "SPARK_HOME": "/opt/spark"
              , "SPARK_CONF": "$SPARK_HOME/conf"
            }
            , "spark_master": {
              "var_name": "var_value"
            }
            , "spark_worker": {
              "var_name": "var_value"
            }
          }
          , "var_name": "var_value"
      }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.