আমি কীভাবে একাধিক ক্ষেত্র নির্বাচন করব জিকিউ-তে


97

আমার ইনপুট ফাইলটি এরকম কিছু দেখাচ্ছে:

{
"login": "dmaxfield",
"id": 7449977,
...
}
{
"login": "dmaxfield",
"id": 7449977,
...
}

আমি এটি দিয়ে সমস্ত লগইন নামগুলি পেতে পারি: cat members | jq '.[].login'

তবে আমি লগইন এবং আইডি উভয়ই পেতে সিনট্যাক্সটি ক্র্যাক করতে পারি না?


আপনার প্রত্যাশিত আউটপুটটি দেখতে কেমন হওয়া উচিত তার উদাহরণ সরবরাহ করতে পারেন? লগইন / আইডি জোড়া প্রতিনিধিত্ব করতে পারে এমন অনেকগুলি উপায় রয়েছে।

উত্তর:


138

আপনি jq '.[] | .login, .id'প্রতিটি আইডিন অনুসরণ করে তার আইডি ব্যবহার করতে পারেন ।


4
ব্যবহারকারীর নমুনা ইনপুটটি অবজেক্টের স্ট্রিমের মতো দেখায়, তবে তারা যে নমুনা স্ক্রিপ্ট সরবরাহ করে তার কারণে, আমি ধরে নিচ্ছি যে এটি একটি অ্যারেতে আবৃত রয়েছে যা তারা বাদ দিয়েছে।

4
@ সাঁতিয়াগো ল্যাপরেস্তা: সেই অনুমানের দরকার নেই। jqঅবজেক্টের ক্রম সহ দুর্দান্ত কাজ করে - অ্যারে র‌্যাপারের প্রয়োজন নেই। ...স্ট্রিং এবং গত চিহ্ন কমা প্রয়োজন অপসারণ, কিন্তু আমি যে বিবেচনা উহ্য করা হবে।
পিটার ভি।

55
অথবা আপনি যদি চান তবে কেবলমাত্র এই দুটি ক্ষেত্র প্রদর্শিত হবে। jq '.[] | {login, id}'
ক্যামেরন ট্যাগগার্ট

4
@ ক্যামেরনটাগগার্ট, আমি যদি প্রদর্শন করতে চাই login.name? jq '.[] | {login.name, id}'কাজ করে মনে হচ্ছে, সঠিক উপায় কি, দয়া করে?
zyxue

6
@zyxue এটি কাজ করে:jq '.[] | {name: .login.name, id}'
অ্যালেক্স গ্রাউন্ডস


10

বিভিন্ন স্তরে (যেমন প্রথম এবং দ্বিতীয় স্তর উভয়) ইন্ডেন্টেড মানগুলি নির্বাচন করতে, আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন:

$ echo '[{"a":{"aa":1,"ab":2},"b":3,"c":4},{"a":{"aa":5,"ab":6},"b":7,"c":8}]'|jq '.[]|[.a.aa,.a.ab,.b]'

[
  1,
  2,
  3
]
[
  5,
  6,
  7
]

2

এখানে আরও একটি উদাহরণ সরবরাহ করুন (জেকিউ-১. 1.):

একটি অ্যারের মধ্য দিয়ে চলুন এবং সেই অবজেক্টে কোনও অবজেক্ট এলিমেন্টের ক্ষেত্র এবং অবজেক্টের ক্ষেত্র নির্বাচন করুন

echo '[{"id":1, "private_info": {"name": "Ivy", "age": 18}}, {"id":2, "private_info": {"name": "Tommy", "aga": 18}}]' | jq ".[] | {id: .id, name: .private_info.name}" -

{
  "id": 1,
  "name": "Ivy"
}
{
  "id": 2,
  "name": "Tommy"
}

উদাহরণ ডেটা ছাড়া:

jq ".[] | {id, name: .private_info.name}" -

.[]: একটি অ্যারের মাধ্যমে হাঁটা

{id, name: .private_info.name}: .id এবং .private_info.name নিন এবং যথাক্রমে ক্ষেত্রের নাম "আইডি" এবং "নাম" সহ একটি বস্তুতে এটি আবদ্ধ করুন


কাঠামো / মূল নামগুলি বজায় রাখার জন্য অবজেক্টে মোড়ানো দুর্দান্ত, আমি যা খুঁজছি ঠিক তা
cryanbhu
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.