ইংরেজিফরাসিস্প্যানিশ

Ad


অনওয়ার্কস ফেভিকন

jq - ক্লাউডে অনলাইন

উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটরের মাধ্যমে OnWorks ফ্রি হোস্টিং প্রদানকারীতে jq চালান

এটি হল jq কমান্ড যা আমাদের একাধিক বিনামূল্যের অনলাইন ওয়ার্কস্টেশন যেমন উবুন্টু অনলাইন, ফেডোরা অনলাইন, উইন্ডোজ অনলাইন এমুলেটর বা MAC OS অনলাইন এমুলেটর ব্যবহার করে OnWorks ফ্রি হোস্টিং প্রদানকারীতে চালানো যেতে পারে।

কার্যক্রম:

NAME এর


jq - কমান্ড লাইন JSON প্রসেসর

সাইনোপিসিস


jq [অপশন...] ছাঁকনি [নথি পত্র...]

jq JSON-কে বিভিন্ন উপায়ে রূপান্তরিত করতে পারে, নির্বাচন, পুনরাবৃত্তি, হ্রাস এবং অন্যভাবে
JSON নথি গুলিয়ে ফেলা। উদাহরণস্বরূপ, কমান্ড চালানো jq 'মানচিত্র(.মূল্য) | যোগ করুন' ইচ্ছা
ইনপুট হিসাবে JSON অবজেক্টের একটি অ্যারে নিন এবং তাদের "মূল্য" ক্ষেত্রের যোগফল ফেরত দিন।

jq টেক্সট ইনপুটও গ্রহণ করতে পারে, কিন্তু ডিফল্টরূপে, jq JSON সত্তার একটি স্ট্রীম পড়ে
(সংখ্যা এবং অন্যান্য আক্ষরিক সহ) থেকে stdin. হোয়াইটস্পেস শুধুমাত্র আলাদা করার জন্য প্রয়োজন
সত্তা যেমন 1 এবং 2, এবং সত্য এবং মিথ্যা। একটি অথবা আরও বেশি নথি পত্র উল্লেখ করা যেতে পারে, যা
কেস jq পরিবর্তে তাদের থেকে ইনপুট পড়া হবে.

সার্জারির অপশন বর্ণনা করা হয় আহ্বান JQ অধ্যায়; তারা বেশিরভাগ ইনপুট এবং আউটপুট উদ্বেগ
বিন্যাস। দ্য ছাঁকনি jq ভাষায় লেখা হয় এবং কীভাবে রূপান্তর করতে হয় তা নির্দিষ্ট করে
ইনপুট ফাইল বা নথি।

ফিল্টারগুলি


একটি jq প্রোগ্রাম একটি "ফিল্টার": এটি একটি ইনপুট নেয় এবং একটি আউটপুট তৈরি করে। সেখানে প্রচুর
একটি বস্তুর একটি নির্দিষ্ট ক্ষেত্র নিষ্কাশন, বা একটি সংখ্যা রূপান্তর করার জন্য বিল্টইন ফিল্টার
একটি স্ট্রিং, বা অন্যান্য বিভিন্ন স্ট্যান্ডার্ড কাজ।

ফিল্টারগুলি বিভিন্ন উপায়ে একত্রিত করা যেতে পারে - আপনি একটি ফিল্টারের আউটপুট পাইপ করতে পারেন
অন্য ফিল্টার, বা একটি অ্যারেতে একটি ফিল্টারের আউটপুট সংগ্রহ করুন।

কিছু ফিল্টার একাধিক ফলাফল উত্পন্ন করে, উদাহরণস্বরূপ এমন একটি যা সমস্তগুলি উত্পাদন করে৷
এর ইনপুট অ্যারের উপাদান। যে ফিল্টারটিকে একটি সেকেন্ডে পাইপ করা হয় তার জন্য দ্বিতীয় ফিল্টারটি চলে
অ্যারের প্রতিটি উপাদান। সাধারণত, লুপ এবং পুনরাবৃত্তির মাধ্যমে করা হবে যে জিনিস
অন্যান্য ভাষায় শুধুমাত্র jq-তে ফিল্টারগুলিকে আঠালো করে করা হয়।

এটা মনে রাখা গুরুত্বপূর্ণ যে প্রতিটি ফিল্টার একটি ইনপুট এবং একটি আউটপুট আছে। এমনকি আক্ষরিক
যেমন "হ্যালো" বা 42 হল ফিল্টার - তারা একটি ইনপুট নেয় কিন্তু সবসময় একই আক্ষরিক উত্পাদন করে
আউটপুট যে ক্রিয়াকলাপগুলি দুটি ফিল্টারকে একত্রিত করে, যেমন সংযোজন, সাধারণত একই ইনপুট প্রদান করে
উভয় এবং ফলাফল একত্রিত. সুতরাং, আপনি হিসাবে একটি গড় ফিল্টার বাস্তবায়ন করতে পারেন যোগ / লম্বা
- উভয়কে ইনপুট অ্যারে খাওয়ানো যোগ ফিল্টার এবং লম্বা ফিল্টার এবং তারপর পারফর্ম করা
বিভাগ.

কিন্তু যে আমাদের নিজেদের এগিয়ে হচ্ছে. :) আসুন সহজ কিছু দিয়ে শুরু করি:

আহ্বান JQ


jq ফিল্টারগুলি JSON ডেটার একটি প্রবাহে চলে। jq-এর ইনপুট একটি ক্রম হিসাবে পার্স করা হয়
হোয়াইটস্পেস-বিচ্ছিন্ন JSON মানগুলি যা প্রদত্ত ফিল্টার একের মধ্য দিয়ে যায়
সময় ফিল্টারের আউটপুট(গুলি) স্ট্যান্ডার্ড আউটে লেখা হয়, আবার এর ক্রম হিসাবে
হোয়াইটস্পেস-বিচ্ছিন্ন JSON ডেটা।

দ্রষ্টব্য: শেলের উদ্ধৃতি নিয়ম মনে রাখা গুরুত্বপূর্ণ। একটি সাধারণ নিয়ম হিসাবে এটি সর্বোত্তম
সর্বদা উদ্ধৃতি (একক-উদ্ধৃতি অক্ষর সহ) jq প্রোগ্রামের সাথে অনেকগুলি অক্ষর
jq-এর বিশেষ অর্থ হল শেল মেটা-অক্ষর। উদাহরণ স্বরূপ, jq "ফু" ব্যর্থ হবে
বেশিরভাগ ইউনিক্স শেল কারণ এটি একই রকম হবে jq foo বিন্যাস, যা সাধারণত ব্যর্থ হবে
কারণ foo বিন্যাস is না সংজ্ঞায়িত. উইন্ডোজ কমান্ড শেল (cmd.exe) ব্যবহার করার সময় এটি সর্বোত্তম
কমান্ড-লাইনে দেওয়া হলে আপনার jq প্রোগ্রামের চারপাশে ডবল কোট ব্যবহার করুন (এর পরিবর্তে -f
কার্যক্রম ফাইল বিকল্প), কিন্তু তারপর jq প্রোগ্রামে ডাবল-কোট ব্যাকস্ল্যাশ এস্কেপিং প্রয়োজন।

আপনি কিছু কমান্ড-লাইন ব্যবহার করে jq কীভাবে এর ইনপুট এবং আউটপুট পড়ে এবং লেখেন তা প্রভাবিত করতে পারেন
বিকল্প:

· --সংস্করণ:

jq সংস্করণটি আউটপুট করুন এবং শূন্য দিয়ে প্রস্থান করুন।

· --সেক:

ব্যবহার অ্যাপ্লিকেশন/json-seq jq এর ইনপুটে JSON পাঠ্য আলাদা করার জন্য MIME টাইপ স্কিম
এবং আউটপুট। এর মানে হল একটি ASCII RS (রেকর্ড বিভাজক) অক্ষর আগে মুদ্রিত হয়
আউটপুটের প্রতিটি মান এবং প্রতিটি আউটপুটের পরে একটি ASCII LF (লাইন ফিড) মুদ্রিত হয়। ইনপুট
JSON পাঠ্যগুলি যেগুলি পার্স করতে ব্যর্থ হয় সেগুলিকে উপেক্ষা করা হয় (তবে সতর্ক করা হয়), সমস্ত বাদ দেওয়া হয়৷
পরবর্তী RS পর্যন্ত পরবর্তী ইনপুট। এটি আরও jq এর আউটপুট ছাড়াই পার্স করে
--সেক বিকল্প।

· --প্রবাহ:

স্ট্রিমিং ফ্যাশনে ইনপুট পার্স করুন, পাথের অ্যারে এবং পাতার মান আউটপুট করুন
(স্কেলার এবং খালি অ্যারে বা খালি বস্তু)। উদাহরণ স্বরূপ, "একটি" হয়ে [[],"a"], এবং
[[],"ক",["বি"]] হয়ে [[0],[]], [[1],"ক"], এবং [[1,0],"b"].

এটি খুব বড় ইনপুট প্রক্রিয়াকরণের জন্য দরকারী। সাথে এটি ব্যবহার করুন
ফিল্টারিং এবং হ্রাস করা এবং প্রতিটির জন্য ক্রমবর্ধমান বড় ইনপুট কমাতে সিনট্যাক্স।

· -- স্লার্প/-s:

ইনপুটে প্রতিটি JSON অবজেক্টের জন্য ফিল্টার চালানোর পরিবর্তে, সম্পূর্ণ ইনপুট পড়ুন
একটি বড় অ্যারেতে স্ট্রিম করুন এবং ফিল্টারটি একবার চালান।

· --কাঁচা নিবেশ/-R:

JSON হিসাবে ইনপুট পার্স করবেন না। পরিবর্তে, পাঠ্যের প্রতিটি লাইন একটি হিসাবে ফিল্টারে পাস করা হয়
স্ট্রিং সাথে মিলিত হলে -- স্লার্প, তারপর সম্পূর্ণ ইনপুট একটি হিসাবে ফিল্টার পাস হয়
একক দীর্ঘ স্ট্রিং

· --নাল-ইনপুট/-n:

কোন ইনপুট এ সব পড়ুন না! পরিবর্তে, একবার ব্যবহার করে ফিল্টার চালানো হয় অকার্যকর ইনপুট হিসাবে।
একটি সাধারণ ক্যালকুলেটর হিসাবে jq ব্যবহার করার সময় বা এর থেকে JSON ডেটা তৈরি করার জন্য এটি কার্যকর
আঁচড়ের দাগ।

· --কম্প্যাক্ট-আউটপুট / -c:

ডিফল্টরূপে, jq প্রিটি-প্রিন্ট করে JSON আউটপুট। এই বিকল্পটি ব্যবহার করলে আরও ফল পাওয়া যাবে
পরিবর্তে প্রতিটি JSON অবজেক্টকে একটি লাইনে রেখে কমপ্যাক্ট আউটপুট।

· --ট্যাব:

দুটি স্থানের পরিবর্তে প্রতিটি ইন্ডেন্টেশন স্তরের জন্য একটি ট্যাব ব্যবহার করুন।

· --ইন্ডেন্ট n:

ইন্ডেন্টেশনের জন্য প্রদত্ত সংখ্যক স্পেস ব্যবহার করুন (8 এর বেশি নয়)।

· --রঙ-আউটপুট / -C এবং --একরঙা-আউটপুট / -M:

ডিফল্টরূপে, টার্মিনালে লেখা হলে jq রঙিন JSON আউটপুট করে। আপনি এটা জোর করতে পারেন
একটি পাইপ বা একটি ফাইল ব্যবহার করে লিখতে এমনকি যদি রঙ উত্পাদন -C, এবং এর সাথে রঙ নিষ্ক্রিয় করুন -M.

· --ascii-আউটপুট / -a:

jq সাধারণত নন-ASCII ইউনিকোড কোডপয়েন্টগুলিকে UTF-8 হিসাবে আউটপুট করে, এমনকি যদি ইনপুট নির্দিষ্ট করা থাকে
এস্কেপ সিকোয়েন্স হিসেবে (যেমন "\u03bc")। এই বিকল্পটি ব্যবহার করে, আপনি jq কে জোর করতে পারেন
প্রতিটি অ-ASCII অক্ষর সমতুল্য দিয়ে প্রতিস্থাপিত করে বিশুদ্ধ ASCII আউটপুট তৈরি করুন
পালানোর ক্রম।

· --আনবাফার

প্রতিটি JSON অবজেক্ট প্রিন্ট হওয়ার পরে আউটপুট ফ্লাশ করুন (যদি আপনি একটি ধীর গতিতে পাইপিং করেন তবে দরকারী
ডাটা সোর্স jq এ এবং পাইপিং jq এর আউটপুট অন্য কোথাও)।

· --বাছাই-কী / -S:

সাজানো ক্রমে কী দিয়ে প্রতিটি বস্তুর ক্ষেত্র আউটপুট করুন।

· --কাঁচা-আউটপুট / -r:

এই বিকল্পের সাহায্যে, যদি ফিল্টারের ফলাফল একটি স্ট্রিং হয় তবে এটি সরাসরি লেখা হবে
উদ্ধৃতি সহ একটি JSON স্ট্রিং হিসাবে ফর্ম্যাট করার পরিবর্তে আদর্শ আউটপুটে। এটা পারে
jq ফিল্টার নন-JSON-ভিত্তিক সিস্টেমের সাথে কথা বলার জন্য উপযোগী হবে।

· -- জয়েন-আউটপুট / -j:

মত -r কিন্তু jq প্রতিটি আউটপুটের পরে একটি নতুন লাইন প্রিন্ট করবে না।

· -f ফাইলের নাম / --ফাইল থেকে ফাইলের নাম:

কমান্ড লাইনের পরিবর্তে ফাইল থেকে ফিল্টার পড়ুন, যেমন awk's -f বিকল্প। আপনি
মন্তব্য করতে '#' ব্যবহার করতে পারেন।

· -ডিরেক্টরি / -L ডিরেক্টরি:

প্রিপেন্ড ডিরেক্টরি মডিউল অনুসন্ধানের তালিকায়। যদি এই বিকল্পটি ব্যবহার করা হয় তাহলে না
বিল্টইন অনুসন্ধান তালিকা ব্যবহার করা হয়। নীচের মডিউলগুলির বিভাগটি দেখুন।

· -e / --প্রস্থান-স্থিতি:

শেষ আউটপুট মান না থাকলে jq-এর প্রস্থান অবস্থা 0-এ সেট করে মিথ্যা না অকার্যকর,
1 যদি শেষ আউটপুট মান হয় মিথ্যা or অকার্যকর, অথবা 4 যদি কোনো বৈধ ফলাফল না থাকে
উত্পাদিত সাধারণত jq 2 দিয়ে প্রস্থান করে যদি কোন ব্যবহারের সমস্যা বা সিস্টেম ত্রুটি থাকে, 3
যদি একটি jq প্রোগ্রাম কম্পাইল ত্রুটি ছিল, অথবা 0 যদি jq প্রোগ্রাম রান করা হয়।

· --আর্গ নাম মূল্য:

এই বিকল্পটি একটি পূর্বনির্ধারিত পরিবর্তনশীল হিসাবে jq প্রোগ্রামে একটি মান পাস করে। আপনি যদি jq চালান
সঙ্গে --আর্গ foo বিন্যাস বার, তারপর $foo প্রোগ্রামে উপলব্ধ এবং মান আছে "বার".
মনে রাখবেন যে মূল্য একটি স্ট্রিং হিসাবে গণ্য করা হবে, তাই --আর্গ foo বিন্যাস 123 বাঁধা হবে $foo থেকে "123".

· --আরগসন নাম JSON-টেক্সট:

এই বিকল্পটি পূর্বনির্ধারিত পরিবর্তনশীল হিসাবে jq প্রোগ্রামে একটি JSON-এনকোডেড মান পাস করে। যদি
আপনি jq দিয়ে চালান --আরগসন foo বিন্যাস 123, তারপর $foo প্রোগ্রামে উপলব্ধ এবং আছে
মূল্য 123.

· -- slurpfile পরিবর্তনশীল-নাম ফাইলের নাম:

এই বিকল্পটি নামযুক্ত ফাইলের সমস্ত JSON পাঠ্য পাঠ করে এবং এর একটি অ্যারে আবদ্ধ করে
প্রদত্ত গ্লোবাল ভেরিয়েবলে JSON মান পার্স করা হয়েছে। আপনি যদি jq দিয়ে চালান --আর্গফাইল foo বিন্যাস বার,
তারপর $foo প্রোগ্রামে উপলব্ধ এবং একটি অ্যারে রয়েছে যার উপাদানগুলির সাথে মিল রয়েছে৷
নামের ফাইলের পাঠ্য বার.

· --আর্গফাইল পরিবর্তনশীল-নাম ফাইলের নাম:

ব্যবহার করবেন না. ব্যবহার করুন -- slurpfile পরিবর্তে.

(এই বিকল্পটি মত -- slurpfile, কিন্তু যখন ফাইলটিতে শুধুমাত্র একটি টেক্সট থাকে, তখন সেটি হল
ব্যবহৃত হয়, অন্যথায় পাঠ্যের একটি অ্যারে হিসাবে ব্যবহার করা হয় -- slurpfile.)

· --রান-পরীক্ষা [ফাইলের নাম]:

প্রদত্ত ফাইল বা স্ট্যান্ডার্ড ইনপুটে পরীক্ষা চালায়। এটি দেওয়া শেষ বিকল্প হতে হবে
এবং সমস্ত পূর্ববর্তী বিকল্পগুলিকে সম্মান করে না। ইনপুট মন্তব্য লাইন, খালি গঠিত
লাইন, এবং প্রোগ্রাম লাইন একটি ইনপুট লাইন দ্বারা অনুসরণ করা, আউটপুট যত লাইন আছে
প্রত্যাশিত (আউটপুট প্রতি একটি), এবং একটি সমাপ্ত খালি লাইন। সংকলন ব্যর্থতা পরীক্ষা
শুধুমাত্র "%% FAIL" সম্বলিত একটি লাইন দিয়ে শুরু করুন, তারপর একটি লাইন যাতে প্রোগ্রাম থাকে
কম্পাইল করুন, তারপর একটি লাইনের সাথে একটি ত্রুটির বার্তা রয়েছে যা প্রকৃতটির সাথে তুলনা করতে পারে।

সতর্ক থাকুন যে এই বিকল্পটি পিছনের দিকে-অসঙ্গতভাবে পরিবর্তিত হতে পারে।

বেসিক ফিল্টারগুলি


.
পরম সহজ (এবং অন্তত আকর্ষণীয়) ফিল্টার হয় .. এটি একটি ফিল্টার যে তার লাগে
ইনপুট এবং আউটপুট হিসাবে এটি অপরিবর্তিত উত্পাদন করে।

যেহেতু jq ডিফল্টরূপে সমস্ত আউটপুট প্রিটি-প্রিন্ট করে, এই তুচ্ছ প্রোগ্রামটি একটি কার্যকর উপায় হতে পারে
থেকে JSON আউটপুট ফরম্যাটিং, বলুন, কার্ল.

jq ´.´
"ওহে বিশ্ব!"
=> "হ্যালো, বিশ্ব!"

.foo, .foo.বার
সহজতম দরকারী ফিল্টার হয় .foo. যখন একটি JSON অবজেক্ট দেওয়া হয় (ওরফে অভিধান বা হ্যাশ) হিসাবে
ইনপুট, এটি "foo" কী এ মান উৎপন্ন করে, অথবা যদি কোনো উপস্থিত না থাকে তাহলে শূন্য।

যদি কীটিতে বিশেষ অক্ষর থাকে, তাহলে আপনাকে এটিকে ডবল উদ্ধৃতি দিয়ে ঘিরে রাখতে হবে
এই: "foo$".

ফর্মের একটি ফিল্টার .foo.বার সমতুল্য .foo|.বার.

jq ´.foo'
{"foo": 42, "bar": "কম আকর্ষণীয় ডেটা"}
=> 42

jq ´.foo'
{"notfoo": সত্য, "alsonotfoo": মিথ্যা}
=> শূন্য

jq ´ ["foo"]´
{"foo": 42}
=> 42

.ফু?
ঠিক যেমন .foo, কিন্তু একটি ত্রুটি এমনকি আউটপুট না যখন . একটি অ্যারে বা একটি বস্তু নয়.

jq ´.foo?'
{"foo": 42, "bar": "কম আকর্ষণীয় ডেটা"}
=> 42

jq ´.foo?'
{"notfoo": সত্য, "alsonotfoo": মিথ্যা}
=> শূন্য

jq ´.["foo"]?´
{"foo": 42}
=> 42

jq ´[.foo?]´
[1,2]
=> []

[ ], [২], [১০:১৫]
আপনি সিনট্যাক্স ব্যবহার করে একটি বস্তুর ক্ষেত্রগুলিও দেখতে পারেন ["foo"] (.foo উপরে a
এর সংক্ষিপ্ত সংস্করণ)। এটি একটি অ্যারের জন্যও কাজ করে, যদি কী একটি পূর্ণসংখ্যা হয়।
অ্যারেগুলি শূন্য-ভিত্তিক (জাভাস্ক্রিপ্টের মতো), তাই । [2] অ্যারের তৃতীয় উপাদান প্রদান করে।

সার্জারির [১০:১৫] সিনট্যাক্স একটি অ্যারের একটি সাবয়ারে বা একটি স্ট্রিং এর সাবস্ট্রিং ফেরত দিতে ব্যবহার করা যেতে পারে।
অ্যারে দ্বারা ফিরে [১০:১৫] সূচী 5 থেকে উপাদান সমন্বিত দৈর্ঘ্য 10 হবে
(অন্তর্ভুক্ত) সূচক 15 থেকে (একচেটিয়া)। হয় সূচক নেতিবাচক হতে পারে (যে ক্ষেত্রে এটি গণনা করে
অ্যারের শেষ থেকে পিছনের দিকে), বা বাদ দেওয়া হয়েছে (যে ক্ষেত্রে এটি শুরুকে বোঝায় বা
অ্যারের শেষ)।

সার্জারির । [2] প্রদত্ত সূচকে উপাদানটি ফেরত দিতে সিনট্যাক্স ব্যবহার করা যেতে পারে। নেতিবাচক সূচকগুলি
অনুমোদিত, -1 শেষ উপাদানটি উল্লেখ করে, -2 শেষ উপাদানটির পরবর্তী উল্লেখ করে,
এবং তাই.

সার্জারির .foo সিনট্যাক্স শুধুমাত্র সহজ কীগুলির জন্য কাজ করে অর্থাৎ কী যেগুলি সমস্ত বর্ণসংখ্যার অক্ষর।
[ ] কোলন এবং বিন্দুর মতো বিশেষ অক্ষর ধারণ করে এমন কীগুলির সাথে কাজ করে। জন্য
উদাহরণ .["foo::বার"] এবং ["foo.bar"] কাজ করার সময় .foo::বার এবং .foo.বার হবে না.

সার্জারির ? "অপারেটর" স্লাইস অপারেটরের সাথেও ব্যবহার করা যেতে পারে, যেমনটি [১০:১৫]?, যা আউটপুট
মান যেখানে ইনপুট স্লাইস-সক্ষম।

jq ´[0]´
[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]
=> {"নাম":"JSON", "ভাল":সত্য}

jq ´[2]´
[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]
=> শূন্য

jq ´ [2:4]'
["a","b","c","d","e"]
=> ["c", "d"]

jq ´ [2:4]'
"abcdefghi"
=> "সিডি"

jq ´.[:3]'
["a","b","c","d","e"]
=> ["a", "b", "c"]

jq ´.[-2:]'
["a","b","c","d","e"]
=> ["d", "e"]

jq ´ [-2]´
[1,2,3]
=> 2

[]
আপনি যদি ব্যবহার করেন [সূচি] সিনট্যাক্স, কিন্তু সম্পূর্ণরূপে সূচক বাদ দিন, এটি ফিরে আসবে সব এর
একটি অ্যারের উপাদান। চলমান [] ইনপুট সহ [1,2,3] তিনটি হিসাবে সংখ্যা তৈরি করবে
পৃথক ফলাফল, একটি একক অ্যারে হিসাবে পরিবর্তে।

আপনি এটি একটি বস্তুতে ব্যবহার করতে পারেন এবং এটি বস্তুর সমস্ত মান ফিরিয়ে দেবে।

jq ´ []´
[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]
=> {"name":"JSON", "good":true}, {"name":"XML", "good":false}

jq ´ []´
[]
=>

jq ´ []´
{"a": 1, "b": 1}
=> 1, 1

[]?
মত [], কিন্তু কোন ত্রুটি আউটপুট হবে যদি. একটি অ্যারে বা বস্তু নয়।

,
যদি দুটি ফিল্টার একটি কমা দ্বারা পৃথক করা হয়, তাহলে ইনপুট উভয় এবং সেখানে দেওয়া হবে
একাধিক আউটপুট হবে: প্রথমত, বাম অভিব্যক্তি দ্বারা উত্পাদিত সমস্ত আউটপুট, এবং
তারপর ডান দ্বারা উত্পাদিত আউটপুট সব. উদাহরণস্বরূপ, ফিল্টার .foo, .কাফে, উত্পাদন
উভয় "foo" ক্ষেত্র এবং "বার" ক্ষেত্র পৃথক আউটপুট হিসাবে।

jq ´.foo, .bar'
{"foo": 42, "bar": "অন্য কিছু", "baz": true}
=> 42, "অন্য কিছু"

jq ´.user, .projects[]´
{"user":"stedolan", "projects": ["jq", "wikiflow"]}
=> "stedolan", "jq", "wikiflow"

jq ´[4,2]´
["a","b","c","d","e"]
=> "ই", "সি"

|
| অপারেটর বাম দিকের একটির আউটপুট(গুলি) খাওয়ানোর মাধ্যমে দুটি ফিল্টারকে একত্রিত করে
ডানদিকের একজনের ইনপুট। এটা অনেকটা ইউনিক্স শেল এর পাইপের মতই, যদি
আপনি যে অভ্যস্ত.

যদি বাম দিকের একটি একাধিক ফলাফল তৈরি করে, তবে ডানদিকের একটির জন্য চালানো হবে৷
এই ফলাফল প্রতিটি. সুতরাং, অভিব্যক্তি [] | .foo প্রতিটির "foo" ক্ষেত্র পুনরুদ্ধার করে
ইনপুট অ্যারের উপাদান।

jq ´ [] | নাম'
[{"name":"JSON", "good":true}, {"name":"XML", "good":false}]
=> "JSON", "XML"

ধরনের এবং মূল্যবোধ


jq JSON-এর মতো ডেটাটাইপের একই সেট সমর্থন করে - সংখ্যা, স্ট্রিং, বুলিয়ান, অ্যারে,
অবজেক্ট (যা JSON-স্পিকে শুধুমাত্র স্ট্রিং কী দিয়ে হ্যাশ করা হয়), এবং "নাল"।

বুলিয়ান, নাল, স্ট্রিং এবং সংখ্যা জাভাস্ক্রিপ্টের মতোই লেখা হয়। ঠিক যেমন
jq-তে অন্য সবকিছু, এই সাধারণ মানগুলি একটি ইনপুট নেয় এবং একটি আউটপুট তৈরি করে - 42 ইহা একটি
বৈধ jq এক্সপ্রেশন যা একটি ইনপুট নেয়, এটি উপেক্ষা করে এবং পরিবর্তে 42 প্রদান করে।

বিন্যাস নির্মাণ - []
JSON এর মতো, [] অ্যারে তৈরি করতে ব্যবহৃত হয়, যেমন [1,2,3]. অ্যারে উপাদান করতে পারেন
কোন jq অভিব্যক্তি হতে. অভিব্যক্তি সব দ্বারা উত্পাদিত ফলাফল সব সংগ্রহ করা হয়
একটি বড় অ্যারে মধ্যে. আপনি মানগুলির একটি পরিচিত পরিমাণ থেকে একটি অ্যারে তৈরি করতে এটি ব্যবহার করতে পারেন
(হিসাবে হিসাবে [.foo, বার, .বাজ]) বা একটি অ্যারেতে একটি ফিল্টারের সমস্ত ফলাফল "সংগ্রহ" করতে (যেমন
in [.items[].নাম])

একবার আপনি "," অপারেটর বুঝতে পারলে, আপনি jq's অ্যারে সিনট্যাক্সকে অন্যভাবে দেখতে পারেন
আলো: অভিব্যক্তি [1,2,3] কমা-বিচ্ছিন্ন অ্যারেগুলির জন্য একটি অন্তর্নির্মিত সিনট্যাক্স ব্যবহার করছে না,
কিন্তু পরিবর্তে প্রয়োগ করা হয় [] অপারেটর (ফলাফল সংগ্রহ) এক্সপ্রেশন 1,2,3 (যা
তিনটি ভিন্ন ফলাফল তৈরি করে)।

আপনার যদি একটি ফিল্টার থাকে X যে চারটি ফলাফল তৈরি করে, তারপর অভিব্যক্তি [X] হল উত্পাদিত হবে
একক ফলাফল, চারটি উপাদানের একটি অ্যারে।

jq ´[.user, .projects[]]´
{"user":"stedolan", "projects": ["jq", "wikiflow"]}
=> ["stedolan", "jq", "wikiflow"]

অবজেক্টস - {}
JSON এর মত, {} বস্তু নির্মাণের জন্য (ওরফে অভিধান বা হ্যাশ), যেমন: {"a": 42,
"b": 17.

যদি কীগুলি "বুদ্ধিমান" হয় (সমস্ত বর্ণানুক্রমিক অক্ষর), তাহলে উদ্ধৃতিগুলি ছেড়ে দেওয়া যেতে পারে।
মানটি যেকোন এক্সপ্রেশন হতে পারে (যদিও এটি হলে আপনাকে বন্ধনীতে মোড়ানো প্রয়োজন হতে পারে
জটিল একটি), যা {} এক্সপ্রেশনের ইনপুটে প্রয়োগ করা হয় (মনে রাখবেন, সমস্ত ফিল্টার
একটি ইনপুট এবং একটি আউটপুট আছে)।

{foo: .bar}

JSON অবজেক্ট তৈরি করবে {"foo": 42 যদি JSON অবজেক্ট দেওয়া হয় {"বার":42, "বাজ":43}.
আপনি একটি বস্তুর নির্দিষ্ট ক্ষেত্র নির্বাচন করতে এটি ব্যবহার করতে পারেন: যদি ইনপুট একটি বস্তু সঙ্গে হয়
"ব্যবহারকারী", "শিরোনাম", "আইডি", এবং "কন্টেন্ট" ক্ষেত্র এবং আপনি শুধু "ব্যবহারকারী" এবং "শিরোনাম" চান, আপনি করতে পারেন
লেখা

{ব্যবহারকারী: .user, শিরোনাম: .title}

কারণ এটি খুব সাধারণ, এখানে একটি শর্টকাট সিনট্যাক্স রয়েছে: {ব্যবহারকারী, শিরোনাম}.

অভিব্যক্তির একটি একাধিক ফলাফল তৈরি করলে, একাধিক অভিধান হবে
উত্পাদিত যদি ইনপুট হয়

{"user":"stedolan","titles":["JQ প্রাইমার", "আরো JQ"]}

তারপর অভিব্যক্তি

{ব্যবহারকারী, শিরোনাম: .titles[]}

দুটি আউটপুট উত্পাদন করবে:

{"user":"stedolan", "title": "JQ Primer"}
{"user":"stedolan", "title": "আরো JQ"}

কীটির চারপাশে বন্ধনী রাখার অর্থ এটি একটি অভিব্যক্তি হিসাবে মূল্যায়ন করা হবে। সঙ্গে
উপরের মত একই ইনপুট,

{(.ব্যবহারকারী): .titles}

উত্পাদন করে

{"stedolan": ["JQ প্রাইমার", "আরো JQ"]}

jq ´{ব্যবহারকারী, শিরোনাম: .titles[]}'
{"user":"stedolan","titles":["JQ প্রাইমার", "আরো JQ"]}
=> {"user":"stedolan", "title": "JQ Primer"}, {"user":"stedolan", "title": "আরো JQ"}

jq ´{(.user): .titles}´
{"user":"stedolan","titles":["JQ প্রাইমার", "আরো JQ"]}
=> {"stedolan": ["JQ প্রাইমার", "আরো JQ"]}

বিল্টিন অপারেটর এবং ফাংশন


কিছু jq অপারেটর (উদাহরণস্বরূপ, +) তাদের ধরনের উপর নির্ভর করে বিভিন্ন জিনিস
আর্গুমেন্ট (অ্যারে, সংখ্যা, ইত্যাদি)। যাইহোক, jq কখনই অন্তর্নিহিত টাইপ রূপান্তর করে না। যদি
আপনি একটি বস্তুতে একটি স্ট্রিং যোগ করার চেষ্টা করুন আপনি একটি ত্রুটি বার্তা পাবেন এবং কোন ফলাফল পাবেন না।

যোগ - +
চালক + দুটি ফিল্টার নেয়, উভয়কে একই ইনপুটে প্রয়োগ করে এবং যোগ করে
একসাথে ফলাফল। "সংযোজন" মানে কি জড়িত প্রকারের উপর নির্ভর করে:

· নাম্বার সাধারণ পাটিগণিত দ্বারা যোগ করা হয়।

· অ্যারেগুলির একটি বৃহত্তর অ্যারে মধ্যে সংযুক্ত করা হচ্ছে দ্বারা যোগ করা হয়.

· স্ট্রিং একটি বৃহত্তর স্ট্রিং যোগ করা হচ্ছে দ্বারা যোগ করা হয়.

· অবজেক্টস একত্রীকরণের মাধ্যমে যোগ করা হয়, অর্থাৎ, উভয় থেকে সমস্ত কী-মান জোড়া সন্নিবেশ করানো হয়
একটি একক সম্মিলিত বস্তুতে বস্তু। যদি উভয় বস্তু একই জন্য একটি মান ধারণ করে
কী, অবজেক্টের ডানদিকে + জয় (পুনরাবৃত্ত একত্রীকরণের জন্য ব্যবহার করুন * অপারেটর.)

অকার্যকর যেকোনো মান যোগ করা যেতে পারে, এবং অপরিবর্তিত অন্য মান প্রদান করে।

jq ´.a + 1´
{"a": 7}
=> 8

jq ´.a + .b´
{"a": [1,2], "b": [3,4]}
=> [১,২,৩,৪]

jq ´.a + null´
{"a": 1}
=> 1

jq ´.a + 1´
{}
=> 1

jq ´{a: 1} + {b: 2} + {c: 3} + {a: 42}´
অকার্যকর
=> {"a": 42, "b": 2, "c": 3}

বিয়োগ - -
পাশাপাশি সংখ্যার উপর সাধারণ পাটিগণিত বিয়োগ, - অপারেটর অ্যারেতে ব্যবহার করা যেতে পারে
প্রথম অ্যারে থেকে দ্বিতীয় অ্যারের উপাদানগুলির সমস্ত ঘটনা মুছে ফেলতে।

jq ´4 - .a´
{"a":3}
=> 1

jq ´। - ["xml", "yaml"]´
["xml", "yaml", "json"]
=> ["json"]

গুণ, বিভাগ, মডিউল - *, /, এবং %
দুটি সংখ্যা দেওয়া হলে এই ইনফিক্স অপারেটররা আশানুরূপ আচরণ করে। শূন্য দ্বারা বিভাজন বৃদ্ধি
একটি ভুল. x % y কম্পিউট এক্স মডিউল ওয়াই।

একটি স্ট্রিংকে একটি সংখ্যা দ্বারা গুণ করলে সেই স্ট্রিংটির সংমিশ্রণ তৈরি হয় যা অনেকগুলি
বার। "এক্স" * 0 উত্পাদন করে অকার্যকর.

একটি স্ট্রিংকে অন্য দ্বারা ভাগ করলে প্রথমটিকে দ্বিতীয়টিকে বিভাজক হিসাবে ব্যবহার করে বিভক্ত করা হয়।

দুটি বস্তুকে গুণ করলে সেগুলোকে পুনরাবৃত্তভাবে একত্রিত করা হবে: এটি যোগের মতো কাজ করে তবে উভয়েই
বস্তু একই কী জন্য একটি মান ধারণ করে, এবং মান হল বস্তু, দুটি মার্জ করা হয়
একই কৌশল নিয়ে।

jq ´10 /। *3´
5
=> 6

jq ´। / ", "´
"a, b, c, d, e"
=> ["a","b,c,d","e"]

jq ´{"k": {"a": 1, "b": 2}} * {"k": {"a": 0,"c": 3}}´
অকার্যকর
=> {"k": {"a": 0, "b": 2, "c": 3}}

jq ´ [] | (1/.)?'
[১,০,-১]
=> 1, -1

লম্বা
বিল্টইন ফাংশন লম্বা বিভিন্ন ধরনের মানের দৈর্ঘ্য পায়:

· a এর দৈর্ঘ্য স্ট্রিং এটিতে থাকা ইউনিকোড কোডপয়েন্টের সংখ্যা (যা হবে
বাইটে JSON-এনকোড করা দৈর্ঘ্যের সমান যদি এটি বিশুদ্ধ ASCII হয়)।

· একটি এর দৈর্ঘ্য বিন্যাস উপাদান সংখ্যা.

· একটি এর দৈর্ঘ্য লক্ষ্য কী-মান জোড়ার সংখ্যা।

· এর দৈর্ঘ্য অকার্যকর শূন্য।

jq ´ [] | length´ [[1,2], "স্ট্রিং", {"a":2}, null] => 2, 6, 1, 0

চাবি, keys_unsorted
বিল্টইন ফাংশন কী, যখন একটি বস্তু দেওয়া হয়, একটি অ্যারের মধ্যে তার কী ফেরত দেয়।

ইউনিকোড কোডপয়েন্ট ক্রম অনুসারে কীগুলি "বর্ণানুক্রমিকভাবে" সাজানো হয়। এটি একটি আদেশ নয়
যে কোনো বিশেষ ভাষায় বিশেষ অর্থ করে, কিন্তু আপনি এটি হচ্ছে উপর নির্ভর করতে পারেন
লোকেল সেটিংস নির্বিশেষে একই কীগুলির সেট সহ যেকোনো দুটি বস্তুর জন্য একই।

কখন কী একটি অ্যারে দেওয়া হয়, এটি সেই অ্যারের জন্য বৈধ সূচক প্রদান করে: পূর্ণসংখ্যা
0 থেকে দৈর্ঘ্য -1।

সার্জারির keys_unsorted ফাংশন ঠিক মত কী, কিন্তু যদি ইনপুট একটি বস্তু হয় তাহলে কী
বাছাই করা হবে না, পরিবর্তে কীগুলি মোটামুটিভাবে সন্নিবেশ ক্রমে থাকবে।

jq 'কী'
{"abc": 1, "abcd": 2, "Foo": 3}
=> ["Foo", "abc", "abcd"]

jq 'কী'
[42,3,35]
=> [১,২,৩,৪]

আছে(কী)
বিল্টইন ফাংশন হয়েছে ইনপুট বস্তুর প্রদত্ত কী, বা ইনপুট আছে কিনা তা প্রদান করে
প্রদত্ত সূচকে অ্যারের একটি উপাদান রয়েছে।

আছে($কী) কিনা চেক হিসাবে একই প্রভাব আছে $কী ফিরে আসা অ্যারের একজন সদস্য
by কী, যদিও হয়েছে দ্রুত হবে।

jq ´map(has("foo"))´
[{"foo": 42}, {}]
=> [সত্য, মিথ্যা]

jq ´ মানচিত্র(হয়েছে(2))'
[[0,1], ["a","b","c"]]
=> [মিথ্যা, সত্য]

in
বিল্টইন ফাংশন in প্রদত্ত অবজেক্টে ইনপুট কীটি বা ইনপুট সূচকটি ফেরত দেয়
প্রদত্ত অ্যারের একটি উপাদানের সাথে মিলে যায়। এটা, মূলত, একটি বিপরীত সংস্করণ
হয়েছে.

jq ´ [] | in({"foo": 42})´
["foo", "বার"]
=> সত্য, মিথ্যা

jq ´ম্যাপ(in([0,1]))´
[2, 0]
=> [মিথ্যা, সত্য]

পথ(পথ_প্রকাশ)
প্রদত্ত পাথ এক্সপ্রেশনের অ্যারে উপস্থাপনা আউটপুট করে .. আউটপুট এর অ্যারে
স্ট্রিং (বস্তু0 এবং/অথবা সংখ্যার কী (অ্যারে সূচক।

পাথ এক্সপ্রেশন jq এক্সপ্রেশন মত .aকিন্তু এছাড়াও []. পথ দুই প্রকার
অভিব্যক্তি: যেগুলি হুবহু মেলে এবং যেগুলি পারে না৷ উদাহরণ স্বরূপ, .abc একটি
সঠিক ম্যাচ পাথ অভিব্যক্তি, যখন .a[].b এটি না.

পথ(সঠিক_পথ_প্রকাশ) পাথ এক্সপ্রেশনের অ্যারে উপস্থাপনা তৈরি করবে
এমনকি যদি এটি বিদ্যমান না থাকে ., যদি . is অকার্যকর বা একটি অ্যারে বা একটি বস্তু।

পথ (প্যাটার্ন) মিলিত পাথগুলির অ্যারে উপস্থাপনা তৈরি করবে প্যাটার্ন যদি
পাথ বিদ্যমান ..

লক্ষ্য করুন যে পথের অভিব্যক্তি স্বাভাবিক অভিব্যক্তি থেকে ভিন্ন নয়। এখনও বিক্রয়ের জন্য
পথ(..|সিলেক্ট(টাইপ=="বুলিয়ান")) বুলিয়ান মানগুলির সমস্ত পথ আউটপুট করে ., এবং শুধুমাত্র
ঐ পথ

jq ´path(.a[0].b)´
অকার্যকর
=> ["a",0,"b"]

jq ´[পথ(..)]'
{"a":[{"b":1}]}
=> [[],["a"],["a",0],["a",0,"b"]]

del(পথ_প্রকাশ)
বিল্টইন ফাংশন এর একটি বস্তু থেকে একটি কী এবং এর সংশ্লিষ্ট মান সরিয়ে দেয়।

jq ´del(.foo)'
{"foo": 42, "bar": 9001, "baz": 42}
=> {"বার": 9001, "বাজ": 42}

jq ´del([1, 2])'
["ফু", "বার", "বাজ"]
=> ["foo"]

to_entries, থেকে_এন্ট্রি, সঙ্গে_এন্ট্রি
এই ফাংশনগুলি একটি বস্তু এবং কী-মান জোড়ার একটি অ্যারের মধ্যে রূপান্তর করে। যদি to_entries
একটি বস্তু পাস করা হয়, তারপর প্রতিটি জন্য k: v ইনপুটে এন্ট্রি, আউটপুট অ্যারে অন্তর্ভুক্ত
{"চাবি": k, "মান": v}.

থেকে_এন্ট্রি বিপরীত রূপান্তর করে, এবং সঙ্গে_এন্ট্রি(foo) জন্য একটি সংক্ষিপ্ত বিবরণ
to_entries | মানচিত্র(foo) | থেকে_এন্ট্রি, সমস্ত কী এবং কিছু অপারেশন করার জন্য দরকারী
একটি বস্তুর মান। থেকে_এন্ট্রি কী, কী, নাম, মান এবং মান কী হিসাবে গ্রহণ করে।

jq ´to_entries'
{"a": 1, "b": 2}
=> [{"কী":"a", "value":1}, {"key":"b", "value":2}]

jq ´from_entries'
[{"key":"a", "value":1}, {"key":"b", "value":2}]
=> {"a": 1, "b": 2}

jq ´with_entries(.key |= "KEY_" + .)´
{"a": 1, "b": 2}
=> {"KEY_a": 1, "KEY_b": 2}

নির্বাচন করুন(বুলিয়ান_এক্সপ্রেশন)
কাজ নির্বাচন (foo) যদি অপরিবর্তিত তার ইনপুট উত্পাদন করে foo বিন্যাস সেই ইনপুটের জন্য সত্য ফেরত দেয়,
এবং অন্যথায় কোন আউটপুট উত্পাদন করে না।

এটি ফিল্টারিং তালিকার জন্য দরকারী: [1,2,3] | মানচিত্র(নির্বাচন(. >= 2)) তোমাকে দিবে [2,3].

jq ´ম্যাপ(নির্বাচন(. >= 2))'
[1,5,3,0,7]
=> [১,২,৩,৪]

jq ´ [] | (.id == "সেকেন্ড")' নির্বাচন করুন
[{"আইডি": "প্রথম", "ভাল": 1}, {"আইডি": "দ্বিতীয়", "ভাল": 2}]
=> {"id": "দ্বিতীয়", "val": 2}

অ্যারে, বস্তু, পুনরাবৃত্তিযোগ্য, বুলিয়ানস, সংখ্যা, স্বাভাবিক, সসীম, স্ট্রিং, শূন্য, মান,
স্কেলার
এই বিল্ট-ইনগুলি কেবলমাত্র ইনপুটগুলি নির্বাচন করে যা অ্যারে, অবজেক্ট, পুনরাবৃত্তিযোগ্য (অ্যারে বা
বস্তু), বুলিয়ান, সংখ্যা, স্বাভাবিক সংখ্যা, সসীম সংখ্যা, স্ট্রিং, নাল, অ-নাল
মান, এবং অ-পূরণীয়, যথাক্রমে।

jq ´ []|সংখ্যা'
[[],{},1,"foo", null,true,false]
=> 1

খালি
খালি কোন ফলাফল দেয় না। কোনোটিই নয়। এমনকি না অকার্যকর.

এটা উপলক্ষ্যে দরকারী. আপনার প্রয়োজন হলে জানতে পারবেন :)

jq ´1, খালি, 2´
অকার্যকর
=> 1, 2

jq ´[1,2,খালি,3]´
অকার্যকর
=> [১,২,৩,৪]

ভুল(বার্তা)
একটি ত্রুটি উত্পাদন করে, ঠিক মত .a নাল এবং বস্তু ছাড়া অন্য মান প্রয়োগ করা হবে, কিন্তু
প্রদত্ত বার্তাটির সাথে ত্রুটির মান হিসাবে।

$__loc__
ফাইলের নাম এবং লাইন নম্বর সহ একটি "ফাইল" কী এবং একটি "লাইন" কী সহ একটি বস্তু তৈরি করে
কোথায় $__loc__ ঘটে, মান হিসাবে।

jq ´ট্রাই ত্রুটি("\($__loc__)") ধরা .´
অকার্যকর
=> "{\"ফাইল\":\" \",\"লাইন 1}"

মানচিত্র(x), মানচিত্র_মান(x)
যেকোনো ফিল্টারের জন্য x, মানচিত্র(x) ইনপুট অ্যারের প্রতিটি উপাদানের জন্য সেই ফিল্টারটি চালাবে, এবং
আউটপুট একটি নতুন অ্যারে উত্পাদন. মানচিত্র(.+1) একটি অ্যারের প্রতিটি উপাদান বৃদ্ধি হবে
নম্বর।

একইভাবে, মানচিত্র_মান(x) প্রতিটি উপাদানের জন্য সেই ফিল্টারটি চালাবে, কিন্তু এটি একটি ফেরত দেবে
বস্তু যখন একটি বস্তু পাস হয়.

মানচিত্র(x) সমতুল্য [[] | x]. আসলে, এইভাবে এটি সংজ্ঞায়িত করা হয়েছে। একইভাবে,
মানচিত্র_মান(x) হিসাবে সংজ্ঞায়িত করা হয় [] |= x.

jq 'মানচিত্র(.+1)'
[1,2,3]
=> [১,২,৩,৪]

jq ´map_values(.+1)´
{"a": 1, "b": 2, "c": 3}
=> {"a": 2, "b": 3, "c": 4}

পথ, পথ (নোড_ফিল্টার), পাতার_পথ
পাথ এর ইনপুটের সমস্ত উপাদানের পাথ আউটপুট করে (এটি ব্যতীত আউটপুট দেয় না
খালি তালিকা, প্রতিনিধিত্ব করে। নিজেই)।

পথ(চ) যে কোনো মান যা জন্য পাথ আউটপুট f সত্য. এটাই, পথ (সংখ্যা)
সমস্ত সাংখ্যিক মানের পাথ আউটপুট করে।

পাতার_পথ এর একটি উপনাম পথ (স্কেলার); পাতার_পথ is অবচিত এবং অপসারণ করা হবে
পরবর্তী প্রধান রিলিজ.

jq ´[পথ]´
[1,[[],{"a":2}]]
=> [[0],[1],[1,0],[1,1],[1,1,"a"]]

jq ´[পথ(স্কেলার)]'
[1,[[],{"a":2}]]
=> [[0],[1,1,"a"]]

যোগ
ফিল্টার যোগ একটি অ্যারের ইনপুট হিসাবে নেয় এবং অ্যারের উপাদানগুলিকে আউটপুট হিসাবে তৈরি করে
একসাথে যোগ করা হয়েছে। এর অর্থ হতে পারে সংক্ষিপ্ত, সংযোজিত বা একত্রিত করা প্রকারের উপর নির্ভর করে
ইনপুট অ্যারের উপাদানগুলি - নিয়মগুলি একই রকম + অপারেটর
(উপরে বর্ণিত).

যদি ইনপুট একটি খালি অ্যারে হয়, যোগ আয় অকার্যকর.

jq 'add'
["a","b","c"]
=> "abc"

jq 'add'
[1, 2, 3]
=> 6

jq 'add'
[]
=> শূন্য

যে কোন, যেকোনো (শর্ত), যেকোনো (জেনারেটর; শর্ত)
ফিল্টার কোন বুলিয়ান মানগুলির একটি অ্যারে ইনপুট হিসাবে নেয় এবং উত্পাদন করে সত্য আউটপুট হিসাবে যদি
অ্যারের উপাদানগুলির মধ্যে যেকোনো একটি সত্য.

যদি ইনপুট একটি খালি অ্যারে হয়, কোন আয় মিথ্যা.

সার্জারির যেকোনো (শর্ত) ফর্ম ইনপুট অ্যারের উপাদানগুলিতে প্রদত্ত শর্ত প্রয়োগ করে।

সার্জারির যেকোনো (জেনারেটর; শর্ত) ফর্ম প্রদত্ত শর্তটি সমস্ত আউটপুটে প্রয়োগ করে
দেওয়া জেনারেটর।

jq 'যেকোনো'
[সত্য মিথ্যা]
=> সত্য

jq 'যেকোনো'
[মিথ্যা, মিথ্যা]
=> মিথ্যা

jq 'যেকোনো'
[]
=> মিথ্যা

সব, সব (শর্ত), সব (জেনারেটর; শর্ত)
ফিল্টার সব বুলিয়ান মানগুলির একটি অ্যারে ইনপুট হিসাবে নেয় এবং উত্পাদন করে সত্য আউটপুট হিসাবে যদি
অ্যারের সমস্ত উপাদান রয়েছে সত্য.

সার্জারির সব (শর্ত) ফর্ম ইনপুট অ্যারের উপাদানগুলিতে প্রদত্ত শর্ত প্রয়োগ করে।

সার্জারির সব (জেনারেটর; শর্ত) ফর্ম প্রদত্ত শর্তটি সমস্ত আউটপুটে প্রয়োগ করে
দেওয়া জেনারেটর।

যদি ইনপুট একটি খালি অ্যারে হয়, সব আয় সত্য.

jq 'all'
[সত্য মিথ্যা]
=> মিথ্যা

jq 'all'
[সত্যি সত্যি]
=> সত্য

jq 'all'
[]
=> সত্য

[প্রয়োজন 1.5] সমতল করা, সমতল (গভীরতা)
ফিল্টার চেপটান ইনপুট হিসাবে নেস্টেড অ্যারেগুলির একটি অ্যারে নেয় এবং একটি ফ্ল্যাট অ্যারে তৈরি করে
যা মূল অ্যারের ভিতরের সমস্ত অ্যারে তাদের মান দ্বারা পুনরাবৃত্তভাবে প্রতিস্থাপিত হয়েছে।
বাসা বাঁধার কত স্তর সমতল করতে হবে তা নির্দিষ্ট করতে আপনি এটিতে একটি যুক্তি দিতে পারেন।

চেপটান(২০১০) মত চেপটান, কিন্তু শুধুমাত্র দুই স্তর গভীর পর্যন্ত যাচ্ছে.

jq 'চ্যাপ্টা'
[১, [২], [[৩]]]
=> [১, ২, ৩]

jq ´চেপটান(1)'
[১, [২], [[৩]]]
=> [১, ২, [৩]]

jq 'চ্যাপ্টা'
[[]]
=> []

jq 'চ্যাপ্টা'
[{"foo": "বার"}, [{"foo": "baz"}]]
=> [{"foo": "bar"}, {"foo": "baz"}]

পরিসীমা (পর্যন্ত), পরিসীমা (থেকে; পর্যন্ত) পরিসীমা (থেকে; পর্যন্ত; দ্বারা)
সার্জারির পরিসর ফাংশন সংখ্যার একটি পরিসীমা তৈরি করে। পরিসীমা(4;10) 6 থেকে 4টি সংখ্যা তৈরি করে
(অন্তর্ভুক্ত) থেকে 10 (একচেটিয়া)। সংখ্যা পৃথক আউটপুট হিসাবে উত্পাদিত হয়. ব্যবহার করুন
[পরিসীমা(4;10)] একটি অ্যারে হিসাবে একটি পরিসীমা পেতে.

একটি আর্গুমেন্ট ফর্ম 0 থেকে প্রদত্ত সংখ্যা পর্যন্ত সংখ্যা তৈরি করে, এর একটি বৃদ্ধি সহ
1.

দুটি আর্গুমেন্ট ফর্ম থেকে সংখ্যা তৈরি করে থেকে থেকে পর্যন্ত 1 এর বৃদ্ধি সহ।

তিনটি আর্গুমেন্ট ফর্ম সংখ্যা তৈরি করে থেকে থেকে পর্যন্ত একটি বৃদ্ধি সঙ্গে by.

jq 'রেঞ্জ(2;4)'
অকার্যকর
=> 2, 3

jq ´[পরিসীমা(2;4)]'
অকার্যকর
=> [১,২,৩,৪]

jq ´[পরিসর(4)]'
অকার্যকর
=> [১,২,৩,৪]

jq ´[পরিসীমা(0;10;3)]'
অকার্যকর
=> [১,২,৩,৪]

jq ´[পরিসীমা(0;10;-1)]'
অকার্যকর
=> []

jq ´[পরিসীমা(0;-5;-1)]'
অকার্যকর
=> [0,-1,-2,-3,-4]

মেঝে
সার্জারির মেঝে ফাংশন তার সাংখ্যিক ইনপুটের মেঝে প্রদান করে।

jq 'ফ্লোর'
3.14159
=> 3

বর্গ
সার্জারির বর্গ ফাংশন তার সাংখ্যিক ইনপুটের বর্গমূল প্রদান করে।

jq ´sqrt'
9
=> 3

টন নম্বর
সার্জারির টন নম্বর ফাংশন একটি সংখ্যা হিসাবে তার ইনপুট পার্স করে। এটি সঠিকভাবে ফরম্যাটে রূপান্তর করবে
তাদের সাংখ্যিক সমতুল্য স্ট্রিং, একা সংখ্যা ছেড়ে, এবং অন্য সব একটি ত্রুটি দিতে
ইনপুট.

jq ´ [] | টন নম্বর'
[1, "1"]
=> 1, 1

স্ট্রিং
সার্জারির স্ট্রিং ফাংশন একটি স্ট্রিং হিসাবে এর ইনপুট প্রিন্ট করে। স্ট্রিং অপরিবর্তিত রাখা হয়, এবং সব
অন্যান্য মানগুলি JSON-এনকোডেড।

jq ´ [] | স্ট্রিং
[1, "1", [1]]
=> "1", "1", "[1]"

আদর্শ
সার্জারির আদর্শ ফাংশন একটি স্ট্রিং হিসাবে তার আর্গুমেন্টের ধরন প্রদান করে, যা একটি নাল,
বুলিয়ান, সংখ্যা, স্ট্রিং, অ্যারে বা বস্তু।

jq 'মানচিত্র(টাইপ)'
[0, মিথ্যা, [], {}, শূন্য, "হ্যালো"]
=> ["সংখ্যা", "বুলিয়ান", "অ্যারে", "অবজেক্ট", "নাল", "স্ট্রিং"]

অসীম, না, অসীম, ইসনান, অসীম, স্বাভাবিক
কিছু গাণিতিক ক্রিয়াকলাপ অসীম এবং "সংখ্যা নয়" (NaN) মান দিতে পারে। দ্য
অসীম বিল্টইন রিটার্ন সত্য যদি এর ইনপুট অসীম হয়। দ্য isnan বিল্টইন রিটার্ন সত্য
যদি এর ইনপুট একটি NaN হয়। দ্য অসীম বিল্টইন একটি ইতিবাচক অসীম মান প্রদান করে। দ্য নান
বিল্টইন একটি NaN প্রদান করে। দ্য স্বাভাবিক বিল্টইন সত্য প্রদান করে যদি এর ইনপুট একটি সাধারণ সংখ্যা হয়।

মনে রাখবেন যে শূন্য দ্বারা বিভাজন একটি ত্রুটি উত্থাপন করে।

বর্তমানে বেশিরভাগ গাণিতিক ক্রিয়াকলাপগুলি ইনফিনিটিস, NaN এবং সাব-নর্মালের উপর পরিচালিত হয় না
ত্রুটি বাড়ান।

jq ´ [] | (অসীম *।) < 0´
[-১, ১]
=> সত্য, মিথ্যা

jq ´infinite, nan | টাইপ'
অকার্যকর
=> "নম্বর", "নম্বর"

সাজান, sort_by(পথ_অভিব্যক্তি)
সার্জারির সাজান ফাংশন তার ইনপুট সাজায়, যা একটি অ্যারে হতে হবে। মানগুলি তে সাজানো হয়
নিম্নলিখিত আদেশ:

· অকার্যকর

· মিথ্যা

· সত্য

· সংখ্যা

· স্ট্রিং, বর্ণানুক্রমিকভাবে (ইউনিকোড কোডপয়েন্ট মান অনুসারে)

· অ্যারে, আভিধানিক ক্রমে

· বস্তু

বস্তুর জন্য ক্রম একটু জটিল: প্রথমে তাদের তুলনা করে তুলনা করা হয়
কীগুলির সেট (বাছাই ক্রমে অ্যারে হিসাবে), এবং যদি তাদের কীগুলি সমান হয় তবে মানগুলি
কী দ্বারা কী তুলনা করুন।

সাজান একটি বস্তুর একটি নির্দিষ্ট ক্ষেত্র অনুসারে বা যেকোন jq ফিল্টার প্রয়োগ করে সাজানোর জন্য ব্যবহার করা যেতে পারে।

sort_by(foo) এর ফলাফল তুলনা করে দুটি উপাদানের তুলনা করে foo বিন্যাস প্রতিটি উপাদানের উপর।

jq ´sort'
[৮,৩,শূন্য,৬]
=> [শূন্য,৩,৬,৮]

jq ´sort_by(.foo)'
[{"foo":4, "bar":10}, {"foo":3, "bar":100}, {"foo":2, "bar":1}]
=> [{"foo":2, "bar":1}, {"foo":3, "bar":100}, {"foo":4, "bar":10}]

গ্রুপ_বাই(পথ_প্রকাশ)
group_by(.foo) একটি অ্যারে ইনপুট হিসাবে নেয়, একই থাকা উপাদানগুলিকে গোষ্ঠীভুক্ত করে .foo ক্ষেত্র
আলাদা অ্যারেতে, এবং এই সমস্ত অ্যারেগুলিকে একটি বড় অ্যারের উপাদান হিসাবে তৈরি করে,
এর মান অনুসারে সাজানো .foo ক্ষেত্র।

যেকোন jq এক্সপ্রেশন, শুধুমাত্র একটি ক্ষেত্র অ্যাক্সেস নয়, এর জায়গায় ব্যবহার করা যেতে পারে .foo. বাছাই
অর্ডারে বর্ণিত হিসাবে একই সাজান উপরে ফাংশন।

jq ´group_by(.foo)'
[{"foo":1, "bar":10}, {"foo":3, "bar":100}, {"foo":1, "bar":1}]
=> [[{"foo":1, "bar":10}, {"foo":1, "bar":1}], [{"foo":3, "bar":100}]]

কমপক্ষে, সর্বোচ্চ, min_by(path_exp), max_by(path_exp)
ইনপুট অ্যারের সর্বনিম্ন বা সর্বোচ্চ উপাদান খুঁজুন।

সার্জারির min_by(path_exp) এবং max_by(path_exp) ফাংশন আপনাকে একটি নির্দিষ্ট নির্দিষ্ট করার অনুমতি দেয়
ক্ষেত্র বা সম্পত্তি পরীক্ষা, যেমন min_by(.foo) ক্ষুদ্রতম দিয়ে বস্তুটি খুঁজে বের করে foo বিন্যাস
ক্ষেত্র।

jq ´min'
[5,4,2,7]
=> 2

jq ´max_by(.foo)´
[{"foo":1, "bar":14}, {"foo":2, "bar":3}]
=> {"foo":2, "বার":3}

অনন্য, অনন্য_দ্বারা(পথ_এক্সপ)
সার্জারির অনন্য ফাংশন একটি অ্যারে ইনপুট হিসাবে নেয় এবং একই উপাদানগুলির একটি অ্যারে তৈরি করে, in
সদৃশ ক্রম, সদৃশ সরানো সহ।

সার্জারির অনন্য_দ্বারা(পথ_এক্সপ) ফাংশন দ্বারা প্রাপ্ত প্রতিটি মানের জন্য শুধুমাত্র একটি উপাদান রাখা হবে
যুক্তি প্রয়োগ করা। প্রতিটি থেকে একটি উপাদান নিয়ে একটি অ্যারে তৈরি হিসাবে এটি মনে করুন
গ্রুপ দ্বারা উত্পাদিত গ্রুপ.

jq 'অনন্য'
[1,2,5,3,5,3,1,3]
=> [১,২,৩,৪]

jq 'unique_by(.foo)'
[{"foo": 1, "বার": 2}, {"foo": 1, "বার": 3}, {"foo": 4, "বার": 5}]
=> [{"foo": 1, "bar": 2}, {"foo": 4, "bar": 5}]

jq 'অনন্য_বাই(দৈর্ঘ্য)'
["চাঙ্কি", "বেকন", "বিড়ালছানা", "সিকাডা", "অ্যাসপারাগাস"]
=> ["বেকন", "চাঙ্কি", "অ্যাসপারাগাস"]

বিপরীত
এই ফাংশন একটি অ্যারে বিপরীত.

jq 'বিপরীত'
[1,2,3,4]
=> [১,২,৩,৪]

রয়েছে(উপাদান)
ফিল্টার রয়েছে(খ) ইনপুটের মধ্যে b সম্পূর্ণরূপে অন্তর্ভুক্ত থাকলে সত্য উৎপন্ন হবে। ক
স্ট্রিং B একটি স্ট্রিং A এর মধ্যে থাকে যদি B A এর সাবস্ট্রিং হয়। একটি অ্যারে B এর মধ্যে থাকে
একটি অ্যারে A যদি B-এর সমস্ত উপাদান A-এর যেকোনো উপাদানে থাকে। একটি বস্তু B হল
অবজেক্ট A এর মধ্যে থাকে যদি B এর সমস্ত মান A এর সাথে থাকে
একই কী অন্য সব প্রকার একে অপরের মধ্যে রয়েছে বলে ধরে নেওয়া হয় যদি তারা সমান হয়।

jq ´ধারণ করে("বার")´
"ফুবার"
=> সত্য

jq ´ধারণ করে(["baz", "বার"])´
["ফুবার", "ফুবাজ", "ব্লার্প"]
=> সত্য

jq ´ধারণ করে(["bazzzzz", "বার"])´
["ফুবার", "ফুবাজ", "ব্লার্প"]
=> মিথ্যা

jq 'ধারণ করে ({foo: 12, বার: [{barp: 12}]})'
{"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]}
=> সত্য

jq 'ধারণ করে ({foo: 12, বার: [{barp: 15}]})'
{"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]}
=> মিথ্যা

সূচক
সূচকগুলি ধারণকারী একটি অ্যারে আউটপুট করে . কোথায় s ঘটে ইনপুট একটি অ্যারে হতে পারে, ইন
কোন ক্ষেত্রে যদি s একটি অ্যারে তাহলে সূচক আউটপুট হবে যেখানে সমস্ত উপাদান আছে .
এর সাথে মেলে s.

jq ´সূচক(", ")´
"a,b, cd, efg, hijk"
=> [১,২,৩,৪]

jq ´সূচকের(1)'
[0,1,2,1,3,1,4]
=> [১,২,৩,৪]

jq 'সূচক ([1,2])'
[0,1,2,3,1,4,2,5,1,2,6,7]
=> [১,২,৩,৪]

সূচক(গুলি), রিন্ডেক্স
প্রথমটির সূচক আউটপুট করে (সূচক) বা শেষ (rindex) এর সংঘটন s ইনপুট

jq ´index(", ")´
"a,b, cd, efg, hijk"
=> 3

jq ´rindex(", ")´
"a,b, cd, efg, hijk"
=> 12

ভিতরে
ফিল্টার ভিতরে(খ) ইনপুট সম্পূর্ণভাবে b এর মধ্যে থাকলে সত্য উৎপন্ন হবে। এটা
মূলত, এর একটি বিপরীত সংস্করণ ধারণ.

jq ´ভিতরে("foobar")´
"বার"
=> সত্য

jq ´inside(["foobar", "foobaz", "blarp"])´
["বাজ", "বার"]
=> সত্য

jq ´inside(["foobar", "foobaz", "blarp"])´
["bazzzzzz", "বার"]
=> মিথ্যা

jq ´ভিতরে({"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]})´
{"foo": 12, "bar": [{"barp": 12}]}
=> সত্য

jq ´ভিতরে({"foo": 12, "bar":[1,2,{"barp":12, "blip":13}]})´
{"foo": 12, "bar": [{"barp": 15}]}
=> মিথ্যা

শুরু করে(str)
আউটপুট সত্য যদি প্রদত্ত স্ট্রিং আর্গুমেন্ট দিয়ে শুরু হয়।

jq ´[[]|startswith("foo")]´
["fo", "foo", "barfoo", "foobar", "barfoob"]
=> [মিথ্যা, সত্য, মিথ্যা, সত্য, মিথ্যা]

শেষের সাথে(str)
আউটপুট সত্য যদি প্রদত্ত স্ট্রিং আর্গুমেন্ট দিয়ে শেষ হয়।

jq ´[[]|endswith("foo")]´
["ফুবার", "বারফু"]
=> [মিথ্যা, সত্য]

সংমিশ্রণ, সংমিশ্রণ(n)
ইনপুট অ্যারেতে অ্যারের উপাদানগুলির সমস্ত সমন্বয় আউটপুট করে। যদি একটি দেওয়া হয়
যুক্তি n, এটা সব সমন্বয় আউটপুট n ইনপুট অ্যারের পুনরাবৃত্তি।

jq 'কম্বিনেশন'
[[১,২], [৩, ৪]]
=> [1, 3], [1, 4], [2, 3], [2, 4]

jq ´সমন্বয়(2)'
[0, 1]
=> [0, 0], [0, 1], [1, 0], [1, 1]

ltrimstr(str)
প্রদত্ত প্রিফিক্স স্ট্রিংটি সরিয়ে দিয়ে এর ইনপুট আউটপুট করে, যদি এটি দিয়ে শুরু হয়।

jq ´[[]|ltrimstr("foo")]´
["fo", "foo", "barfoo", "foobar", "afoo"]
=> ["fo",","barfoo","bar","afoo"]

rtrimstr(str)
প্রদত্ত প্রত্যয় স্ট্রিং মুছে ফেলার সাথে এর ইনপুট আউটপুট করে, যদি এটি দিয়ে শেষ হয়।

jq ´[[]|rtrimstr("foo")]´
["fo", "foo", "barfoo", "foobar", "foob"]
=> ["fo","","বার","foobar","foob"]

বিস্ফোরিত করা
একটি ইনপুট স্ট্রিংকে স্ট্রিংয়ের কোডপয়েন্ট সংখ্যার অ্যারেতে রূপান্তর করে।

jq 'বিস্ফোরণ'
"ফুবার"
=> [১,২,৩,৪]

বিস্ফোরণ
বিস্ফোরণের বিপরীত।

jq 'বিস্ফোরিত'
[65, 66, 67]
=> "ABC"

বিভক্ত করা
বিভাজক আর্গুমেন্টে একটি ইনপুট স্ট্রিং বিভক্ত করে।

jq ´split(", ")´
"a, b, c, d, e, "
=> ["a","b,c,d","e",""]

যোগদান(str)
বিভাজক হিসাবে যুক্তি ব্যবহার করে ইনপুট হিসাবে প্রদত্ত উপাদানগুলির অ্যারেতে যোগদান করে। এটা
এর বিপরীত বিভক্ত করা: অর্থাৎ দৌড়াচ্ছে বিভক্ত ("foo") | যোগ দিন("foo") যেকোনো ইনপুট স্ট্রিং এর উপর
রিটার্ন বলেন ইনপুট স্ট্রিং।

jq ´join(", ")´
["a","b,c,d","e"]
=> "a, b,c, d, e"

ascii_downcase, ascii_upcase
ইনপুট স্ট্রিং এর বর্ণানুক্রমিক অক্ষর (az এবং AZ) রূপান্তরিত সহ একটি অনুলিপি নির্গত করুন
নির্দিষ্ট ক্ষেত্রে।

while(cond; হালনাগাদ)
সার্জারির while(cond; হালনাগাদ) ফাংশন আপনাকে বারবার একটি আপডেট প্রয়োগ করতে দেয় . পর্যন্ত Cond
মিথ্যা।

মনে রাখবেন যে while(cond; হালনাগাদ) অভ্যন্তরীণভাবে একটি পুনরাবৃত্তিমূলক jq ফাংশন হিসাবে সংজ্ঞায়িত করা হয়। পুনরাবৃত্তি
ভিতরে ডাকে যখন অতিরিক্ত মেমরি গ্রাস করবে না যদি আপডেটের সর্বাধিক একটি উত্পাদন
প্রতিটি ইনপুটের জন্য আউটপুট। নীচে উন্নত বিষয় দেখুন.

jq ´[যখন(.<100; .*2)]'
1
=> [১,২,৩,৪]

পর্যন্ত(cond; পরবর্তী)
সার্জারির পর্যন্ত(cond; পরবর্তী) ফাংশন আপনাকে বারবার এক্সপ্রেশন প্রয়োগ করতে দেয় পরবর্তী,
প্রাথমিকভাবে . তারপর তার নিজস্ব আউটপুট, পর্যন্ত Cond সত্য. উদাহরণস্বরূপ, এটি ব্যবহার করা যেতে পারে
একটি ফ্যাক্টরিয়াল ফাংশন বাস্তবায়ন করতে (নীচে দেখুন)।

মনে রাখবেন যে পর্যন্ত(cond; পরবর্তী) অভ্যন্তরীণভাবে একটি পুনরাবৃত্তিমূলক jq ফাংশন হিসাবে সংজ্ঞায়িত করা হয়। পুনরাবৃত্তি
ভিতরে ডাকে পর্যন্ত() অতিরিক্ত মেমরি গ্রাস করবে না যদি পরবর্তী সর্বাধিক একটি উত্পাদন
প্রতিটি ইনপুটের জন্য আউটপুট। নীচে উন্নত বিষয় দেখুন.

jq ´[.,1]|যতক্ষণ না([0] < 1; [[0] - 1, [1] * [0]])|[1]´
4
=> 24

পুনরাবৃত্তি(f), পুনরাবৃত্তি, recurse(f; শর্ত), recurse_down
সার্জারির পুনরাবৃত্তি (চ) ফাংশন আপনাকে একটি পুনরাবৃত্ত কাঠামোর মাধ্যমে অনুসন্ধান করতে এবং নিষ্কাশন করতে দেয়
সব স্তর থেকে আকর্ষণীয় তথ্য. ধরুন আপনার ইনপুট একটি ফাইল সিস্টেম প্রতিনিধিত্ব করে:

{"নাম": "/", "শিশু": [
{"নাম": "/ বিন", "শিশু": [
{"নাম": "/bin/ls", "শিশু": []},
{"নাম": "/ বিন / SH", "শিশু": []}]},
{"নাম": "/ হোম", "শিশু": [
{"name": "/home/stephen", "children": [
{"নাম": "/home/stephen/jq", "children": []}]}]}}}}

এখন ধরুন আপনি উপস্থিত সমস্ত ফাইলের নাম বের করতে চান। আপনি পুনরুদ্ধার করতে হবে .name,
.children[].নাম, .children[].children[].name, এবং তাই। আপনি এর সাথে এটি করতে পারেন:

recurse(.children[]) | নাম

যখন কোন যুক্তি ছাড়াই ডাকা হয়, পুনরাবৃত্তি সমতুল্য পুনরাবৃত্তি([]?).

পুনরাবৃত্তি (চ) অনুরূপ recurse(f; . != খালি) এবং উদ্বেগ ছাড়া ব্যবহার করা যেতে পারে
পুনরাবৃত্তি গভীরতা।

recurse(f; শর্ত) একটি জেনারেটর যা নির্গত দ্বারা শুরু হয়। এবং তারপর পালাক্রমে নির্গত হয়
.|f, .|f|f, .|f|f|f, ... যতক্ষণ গণনা করা মান শর্তটি সন্তুষ্ট করে। জন্য
উদাহরণস্বরূপ, সমস্ত পূর্ণসংখ্যা তৈরি করতে, অন্তত নীতিগতভাবে, কেউ লিখতে পারে পুনরাবৃত্তি (.+1;
সত্য).

উত্তরাধিকার কারণে, recurse_down কল করার একটি উপনাম হিসাবে বিদ্যমান পুনরাবৃত্তি যুক্তি ছাড়া।
এই উপনাম বিবেচনা করা হয় অবচিত এবং পরবর্তী বড় রিলিজে সরানো হবে।

পুনরাবৃত্ত কল ইন পুনরাবৃত্তি যখনই অতিরিক্ত মেমরি গ্রাস করবে না f এ উত্পাদন করে
প্রতিটি ইনপুটের জন্য সর্বাধিক একক আউটপুট।

jq ´recurse(.foo[])´
{"foo":[{"foo": []}, {"foo":[{"foo":[]}]}]}
=> {"foo":[{"foo":[]},{"foo":[{"foo":[]}]}]}, {"foo":[]}, {"foo": [{"foo":[]}]}, {"foo":[]}

jq 'পুনরাবৃত্তি'
{"a":0,"b":[1]}
=> {"a":0,"b":[1]}, 0, [1], 1

jq 'পুনরাবৃত্ত (. * .; . <20)'
2
=> 2, 4, 16

..
জন্য ছোট হাত পুনরাবৃত্তি যুক্তি ছাড়া। এটি XPath-এর অনুরূপ করার উদ্দেশ্যে করা হয়েছে৷ //
অপারেটর. মনে রাখবেন যে .. ক কাজ করে না; ব্যবহার ..|ক পরিবর্তে. নীচের উদাহরণে আমরা ব্যবহার করি
..|.ক? "নীচে" পাওয়া যেকোনো বস্তুতে অবজেক্ট কী "a" এর সমস্ত মান খুঁজে পেতে ..

jq ´..|.a?´
[[{"a":1}]]
=> 1

প্রায়
jq এর পরিবেশের প্রতিনিধিত্বকারী একটি বস্তু আউটপুট করে।

jq 'env.PAGER'
অকার্যকর
=> "কম"

স্থানান্তর
একটি সম্ভাব্য জ্যাগড ম্যাট্রিক্স (অ্যারের একটি অ্যারে) স্থানান্তর করুন। সারি null সঙ্গে প্যাড করা হয় তাই
ফলাফল সবসময় আয়তক্ষেত্রাকার হয়.

jq 'ট্রান্সপোজ'
[[১], [২,৩]]
=> [[1,2], [শূন্য,3]]

অনুসন্ধান(x)
bsearch(x) ইনপুট অ্যারেতে x-এর জন্য একটি বাইনারি অনুসন্ধান পরিচালনা করে। ইনপুট সাজানো হলে এবং
x ধারণ করে, তারপর bsearch(x) অ্যারেতে তার সূচী ফিরিয়ে দেবে; অন্যথায়, যদি অ্যারে হয়
সাজানো, এটি (-1 - ix) ফিরে আসবে যেখানে ix একটি সন্নিবেশ বিন্দু যেমন অ্যারে
ix এ x সন্নিবেশ করার পরেও সাজানো হবে। যদি অ্যারে সাজানো না হয়, bsearch(x)
একটি পূর্ণসংখ্যা প্রদান করবে যা সম্ভবত কোন আগ্রহের নয়।

jq ´অনুসন্ধান(0)'
[0,1]
=> 0

jq ´অনুসন্ধান(0)'
[1,2,3]
=> -1

jq ´অনুসন্ধান(4) $ix | যদি $ix < 0 তারপর .[-(1+$ix)] = 4 অন্য। শেষ
[1,2,3]
=> [১,২,৩,৪]

স্ট্রিং ক্ষেপক - \(foo)
একটি স্ট্রিংয়ের ভিতরে, আপনি ব্যাকস্ল্যাশের পরে প্যারেন্সের ভিতরে একটি অভিব্যক্তি রাখতে পারেন। যাই হোক না কেন
এক্সপ্রেশন রিটার্ন স্ট্রিং মধ্যে interpolated করা হবে.

jq ´"ইনপুটটি ছিল \(.), যা \(.+1)"´ থেকে একটি কম
42
=> "ইনপুটটি ছিল 42, যা 43 এর থেকে একটি কম"

রূপান্তর করুন থেকে তাদেরকে JSON
সার্জারির তোজসন এবং জসন থেকে বিল্টইনস মানগুলিকে JSON পাঠ্য হিসাবে ডাম্প করে বা JSON পাঠ্যকে পার্স করে
মান, যথাক্রমে। টজসন বিল্টইন সেই টস্ট্রিং রিটার্নে টস্ট্রিং থেকে আলাদা
স্ট্রিংগুলি অপরিবর্তিত, যখন tojson স্ট্রিংগুলিকে JSON স্ট্রিং হিসাবে এনকোড করে।

jq ´[[]|টোস্ট্রিং]'
[1, "foo", ["foo"]]
=> ["1","foo","[\"foo\"]"]

jq ´[[]|টোজসন]'
[1, "foo", ["foo"]]
=> ["1","\"foo\"","[\"foo\"]"]

jq ´[[]|tojson|fromjson]'
[1, "foo", ["foo"]]
=> [1,"foo", ["foo"]]

বিন্যাস স্ট্রিং এবং পলায়নপর
সার্জারির @foo সিনট্যাক্স ফর্ম্যাট এবং স্ট্রিং এস্কেপ ব্যবহার করা হয়, যা ইউআরএল তৈরির জন্য দরকারী,
এইচটিএমএল বা এক্সএমএল এর মত একটি ভাষায় নথি, ইত্যাদি। @foo একটি ফিল্টার হিসাবে ব্যবহার করা যেতে পারে
এর নিজস্ব, সম্ভাব্য পালানোগুলি হল:

@পাঠ্য:

কল স্ট্রিং, বিস্তারিত জানার জন্য যে ফাংশন দেখুন.

@জেসন:

JSON হিসাবে ইনপুট সিরিয়ালাইজ করে।

@html:

অক্ষর ম্যাপ করে HTML/XML এস্কেপিং প্রয়োগ করে <>&´" তাদের সত্তার কাছে
সমতুল্য <, >, &, ', ".

@রি:

সমস্ত সংরক্ষিত URI অক্ষরকে a-তে ম্যাপ করে শতাংশ-এনকোডিং প্রয়োগ করে৷ %XX ক্রম.

@csv:

ইনপুটটি অবশ্যই একটি অ্যারে হতে হবে এবং এটির জন্য ডবল কোট সহ CSV হিসাবে রেন্ডার করা হয়৷
স্ট্রিং, এবং উদ্ধৃতি পুনরাবৃত্তি দ্বারা অব্যাহতি.

@tsv:

ইনপুট একটি অ্যারে হতে হবে, এবং এটি TSV (ট্যাব-বিচ্ছিন্ন মান) হিসাবে রেন্ডার করা হয়। প্রতিটি
ইনপুট অ্যারে একটি একক লাইন হিসাবে মুদ্রিত হবে। ক্ষেত্রগুলি একটি একক ট্যাব দ্বারা পৃথক করা হয়
(ascii 0x09) ইনপুট অক্ষর লাইন-ফিড (ascii 0x0a), carriage-return (ascii
0x0d), ট্যাব (ascii 0x09) এবং ব্যাকস্ল্যাশ (ascii 0x5c) এস্কেপ হিসাবে আউটপুট হবে
সিকোয়েন্স \n, \r, \t, \\ যথাক্রমে.

@শ:

একটি POSIX শেলের জন্য একটি কমান্ড-লাইনে ব্যবহারের জন্য ইনপুটটি এস্কেপ করা হয়েছে। যদি
ইনপুট একটি অ্যারে, আউটপুটটি স্থান-বিচ্ছিন্ন স্ট্রিংগুলির একটি সিরিজ হবে।

@বেস64:

RFC 64 দ্বারা নির্দিষ্ট করা ইনপুটটি base4648-এ রূপান্তরিত হয়।

এই সিনট্যাক্সটি একটি দরকারী উপায়ে স্ট্রিং ইন্টারপোলেশনের সাথে মিলিত হতে পারে। আপনি একটি অনুসরণ করতে পারেন
@foo একটি স্ট্রিং আক্ষরিক সঙ্গে টোকেন. স্ট্রিং এর বিষয়বস্তু আক্ষরিক ইচ্ছা না পালিয়ে যেতে
যাইহোক, সেই স্ট্রিং লিটারেলের ভিতরে তৈরি সমস্ত ইন্টারপোলেশন এড়িয়ে যাবে। এই ক্ষেত্রে,

@uri "https://www.google.com/search?q=\(.search)"

ইনপুটের জন্য নিম্নলিখিত আউটপুট তৈরি করবে {"অনুসন্ধান":"কি is jq?"}:

"https://www.google.com/search?q=what%20is%20jq%3F"

মনে রাখবেন যে ইউআরএল-এর স্ল্যাশ, প্রশ্নবোধক চিহ্ন ইত্যাদি এড়িয়ে যায় না, কারণ সেগুলি অংশ ছিল
স্ট্রিং আক্ষরিক.

jq ´@html'
"এটি কাজ করে যদি x < y"
=> "এটি কাজ করে যদি x < y"

jq ´@sh "ইকো \(.)"´
"ওহারাস আলে"
=> "প্রতিধ্বনি ´O´\\´Hara´\´s Ale´"

তারিখগুলি
jq কিছু উচ্চ-স্তরের এবং নিম্ন-স্তরের সাথে কিছু মৌলিক তারিখ পরিচালনার কার্যকারিতা প্রদান করে
বিল্টিনস সমস্ত ক্ষেত্রেই এই বিল্টইনগুলি ইউটিসি-তে সময়ের সাথে একচেটিয়াভাবে ডিল করে।

সার্জারির fromdateiso8601 বিল্টইন ISO 8601 ফরম্যাটে তারিখের সময়কে কয়েক সেকেন্ডে পার্স করে
ইউনিক্স যুগ থেকে (1970-01-01T00:00:00Z)। দ্য todateiso8601 বিল্টইন বিপরীত কাজ করে।

সার্জারির তারিখ হইতে বিল্টইন ডেটটাইম স্ট্রিং পার্স করে। বর্তমানে তারিখ হইতে শুধুমাত্র ISO 8601 সমর্থন করে
datetime স্ট্রিং, কিন্তু ভবিষ্যতে এটি আরও বেশি তারিখের স্ট্রিং পার্স করার চেষ্টা করবে
ফরম্যাটের।

সার্জারির এখন পর্যন্ত বিল্টইন এর একটি উপনাম todateiso8601.

সার্জারির এখন ইউনিক্স যুগের পর থেকে বিল্টইন বর্তমান সময়ের আউটপুট দেয়।

সি-লাইব্রেরি টাইম ফাংশনের নিম্ন-স্তরের jq ইন্টারফেসগুলিও প্রদান করা হয়: strptime,
strftime, mktime, এবং gmtime. এর জন্য আপনার হোস্ট অপারেটিং সিস্টেমের ডকুমেন্টেশন পড়ুন
বিন্যাস স্ট্রিং দ্বারা ব্যবহৃত strptime এবং strftime. দ্রষ্টব্য: এগুলি অগত্যা স্থিতিশীল নয়
jq-তে ইন্টারফেস, বিশেষ করে তাদের স্থানীয়করণ কার্যকারিতা হিসাবে।

সার্জারির gmtime ইউনিক্স যুগের পর থেকে বিল্টইন কয়েক সেকেন্ড খরচ করে এবং একটি "ভাঙা" আউটপুট দেয়
ডাউন টাইম" প্রতিনিধিত্বকারী সংখ্যার অ্যারে হিসাবে সময়ের উপস্থাপনা (এই ক্রমে): the
বছর, মাস (শূন্য-ভিত্তিক), মাসের দিন, দিনের ঘন্টা, মিনিটের
ঘন্টা, মিনিটের দ্বিতীয়, সপ্তাহের দিন, এবং বছরের দিন -- সব
এক-ভিত্তিক যদি না অন্যথায় বলা হয়।

সার্জারির mktime বিল্টইন সময় আউটপুটের "ভাঙা সময়" উপস্থাপনা গ্রহণ করে gmtime
এবং strptime.

সার্জারির strptime(fmt) বিল্টইন ইনপুট স্ট্রিং এর সাথে মিলে যায় fmt যুক্তি. আউটপুট আছে
"ভাঙ্গা সময়" প্রতিনিধিত্ব দ্বারা গ্রাস gmtime এবং দ্বারা আউটপুট mktime.

সার্জারির strftime(fmt) বিল্টইন প্রদত্ত বিন্যাসের সাথে একটি সময় বিন্যাস করে।

বিন্যাস স্ট্রিং জন্য strptime এবং strftime সাধারণ সি লাইব্রেরিতে বর্ণনা করা হয়
ডকুমেন্টেশন ISO 8601 datetime-এর বিন্যাস স্ট্রিং "%Y-%m-%dT%H:%M:%SZ".

jq কিছু সিস্টেমে এই তারিখ কার্যকারিতার কিছু বা সমস্ত সমর্থন নাও করতে পারে।

jq 'fromdate'
"2015-03-05T23:51:47Z"
=> 1425599507

jq ´strptime("%Y-%m-%dT%H:%M:%SZ")´
"2015-03-05T23:51:47Z"
=> [১,২,৩,৪]

jq ´strptime("%Y-%m-%dT%H:%M:%SZ")|mktime´
"2015-03-05T23:51:47Z"
=> 1425599507

শর্তাবলী এবং তুলনা


==, !=
a এবং b এর ফলাফল সমান হলে ´a == b´ অভিব্যক্তিটি 'সত্য' উৎপন্ন করবে (অর্থাৎ,
যদি তারা সমতুল্য JSON নথি উপস্থাপন করে) এবং অন্যথায় 'মিথ্যা'। বিশেষ করে, স্ট্রিং
সংখ্যার সমান হিসাবে বিবেচিত হয় না। আপনি যদি জাভাস্ক্রিপ্ট থেকে আসছেন, jq´s == এর মতো
Javascript's === - মানগুলিকে তখনই সমান বিবেচনা করে যখন তাদের একই প্রকারের পাশাপাশি থাকে
একই মান

!= "সমান নয়", এবং ´a != b´ ´a == b´ এর বিপরীত মান প্রদান করে

jq ´ [] == 1´
[1, 1.0, "1", "কলা"]
=> সত্য, সত্য, মিথ্যা, মিথ্যা

যদি-তবে-অন্যথায়
if A তারপর B আর C শেষ হিসাবে একই কাজ করবে B if A মিথ্যা বা ছাড়া অন্য একটি মান উত্পাদন করে
নাল, কিন্তু হিসাবে একই কাজ C অন্যথায়।

জাভাস্ক্রিপ্টে পাওয়া "সত্য" এর চেয়ে মিথ্যা বা শূন্যের জন্য পরীক্ষা করা একটি সহজ ধারণা
বা পাইথন, কিন্তু এর মানে হল যে আপনাকে কখনও কখনও শর্ত সম্পর্কে আরও স্পষ্ট হতে হবে
আপনি চান: আপনি পরীক্ষা করতে পারবেন না, যেমন একটি স্ট্রিং ব্যবহার করে খালি আছে কিনা if .name তারপর A আর B শেষ,
আপনি আরো মত কিছু প্রয়োজন হবে if (.নাম | দৈর্ঘ্য) > 0 তারপর A আর B শেষ পরিবর্তে.

যদি শর্ত A একাধিক ফলাফল তৈরি করে, তবে এটি "সত্য" হিসাবে বিবেচিত হয় যদি সেগুলির মধ্যে যেকোনও হয়
ফলাফল মিথ্যা বা শূন্য নয়। যদি এটি শূন্য ফলাফল তৈরি করে তবে এটি মিথ্যা বলে বিবেচিত হয়।

একটি যদি ব্যবহার করে আরও কেস যোগ করা যেতে পারে Elif A তারপর B বাক্য গঠন.

jq 'if. == 0 তারপর

"শূন্য" এলিফ। == 1 তারপর "এক" অন্য "অনেক" শেষ 2 => "অনেক"

>, >=, <=, <
তুলনা অপারেটর >, >=, <=, < তাদের বাম যুক্তি এর চেয়ে বড় কিনা তা ফেরত দিন,
তাদের সঠিক যুক্তির চেয়ে বড় বা সমান, কম বা সমান বা তার চেয়ে কম
(যথাক্রমে)।

ক্রম যে জন্য বর্ণিত হিসাবে একই সাজানউপরে।

jq ´। < 5´
2
=> সত্য

এবং/বা/না
jq সাধারণ বুলিয়ান অপারেটরকে সমর্থন করে এবং/বা/না। তাদের সত্যের একই মান রয়েছে
যেন অভিব্যক্তি - মিথ্যা এবং নালকে "মিথ্যা মান" হিসাবে বিবেচনা করা হয়, এবং অন্য কিছু হল a
"প্রকৃত মূল্য".

যদি এই অপারেটরগুলির একটির একটি অপারেন্ড একাধিক ফলাফল তৈরি করে, তাহলে অপারেটর নিজেই
প্রতিটি ইনপুটের জন্য একটি ফলাফল তৈরি করবে।

না আসলে এটি একটি অপারেটরের পরিবর্তে একটি বিল্টইন ফাংশন, তাই এটিকে ফিল্টার হিসাবে বলা হয়
যে জিনিসগুলি বিশেষ সিনট্যাক্সের পরিবর্তে পাইপ করা যেতে পারে, যেমন .foo এবং .কাফে | না.

এই তিনটি শুধুমাত্র "সত্য" এবং "মিথ্যা" মান উৎপন্ন করে এবং তাই শুধুমাত্র প্রকৃত জন্য উপযোগী
বুলিয়ান অপারেশন, এর সাধারণ পার্ল/পাইথন/রুবি ইডিয়মের পরিবর্তে
"মান_যে_হয়_শূন্য বা ডিফল্ট"। আপনি যদি "বা" এর এই ফর্মটি ব্যবহার করতে চান তবে এর মধ্যে বেছে নিন
একটি শর্ত মূল্যায়ন করার পরিবর্তে দুটি মান, নীচের "//" অপারেটরটি দেখুন৷

jq ´42 এবং "a string"´
অকার্যকর
=> সত্য

jq '(সত্য, মিথ্যা) বা মিথ্যা'
অকার্যকর
=> সত্য, মিথ্যা

jq ´(সত্য, সত্য) এবং (সত্য, মিথ্যা)'
অকার্যকর
=> সত্য, মিথ্যা, সত্য, মিথ্যা

jq ´[সত্য, মিথ্যা | না
অকার্যকর
=> [মিথ্যা, সত্য]

বিকল্প অপারেটর - //
ফর্মের একটি ফিল্টার a // b হিসাবে একই ফলাফল উত্পাদন করে a, যদি a অন্যান্য ফলাফল তৈরি করে
চেয়ে মিথ্যা এবং অকার্যকর। অন্যথায়, a // b হিসাবে একই ফলাফল উত্পাদন করে b.

এটি ডিফল্ট প্রদানের জন্য দরকারী: .foo // 1 মূল্যায়ন করবে 1 যদি না থাকে .foo
ইনপুটে উপাদান। এটা কিভাবে অনুরূপ or কখনও কখনও পাইথনে ব্যবহৃত হয় (jq's or অপারেটর
কঠোরভাবে বুলিয়ান অপারেশনের জন্য সংরক্ষিত)।

jq ´.foo // 42´
{"foo": 19}
=> 19

jq ´.foo // 42´
{}
=> 42

ধরার চেষ্টা কর
ব্যবহার করে ভুল ধরা যায় চেষ্টা EXP দঙ্গল EXP. প্রথম অভিব্যক্তি মৃত্যুদন্ড কার্যকর করা হয়, এবং যদি
এটি ব্যর্থ হয় তারপর দ্বিতীয়টি ত্রুটি বার্তা দিয়ে কার্যকর করা হয়। হ্যান্ডলারের আউটপুট, যদি
any, আউটপুট যেন এটি এক্সপ্রেশনের আউটপুট ছিল চেষ্টা করার জন্য।

সার্জারির চেষ্টা EXP ফর্ম ব্যবহার করে খালি ব্যতিক্রম হ্যান্ডলার হিসাবে।

jq ´try .a catch ". is not an object"´
সত্য
=> ". একটি বস্তু নয়"

jq ´[[]|ট্রাই করুন .a]'
[{}, সত্য, {"a":1}]
=> [শূন্য, 1]

jq ´ট্রাই ত্রুটি("কিছু ব্যতিক্রম") ধরা .´
সত্য
=> "কিছু ব্যতিক্রম"

ব্রেকিং বাইরে of নিয়ন্ত্রণ কাঠামো
ট্রাই/ক্যাচের একটি সুবিধাজনক ব্যবহার হল নিয়ন্ত্রণ কাঠামোর বাইরে যাওয়া হ্রাস করা, প্রতিটির জন্য,
যখন, এবং তাই।

উদাহরণ স্বরূপ:

# একটি অভিব্যক্তি পুনরাবৃত্তি করুন যতক্ষণ না এটি একটি হিসাবে "ব্রেক" বাড়ায়
# ত্রুটি, তারপর ত্রুটিটি পুনরায় উত্থাপন না করে পুনরাবৃত্তি করা বন্ধ করুন।
# তবে ধরা পড়া ত্রুটিটি যদি "ব্রেক" না হয় তবে এটি পুনরায় বাড়ান।
পুনরাবৃত্তি (exp) ধরার চেষ্টা করুন।=="ব্রেক" তারপর খালি অন্য ত্রুটি;

"ব্রেক" বা "গো (ব্যাক) টু" করার জন্য নামযুক্ত আভিধানিক লেবেলগুলির জন্য jq-এর একটি সিনট্যাক্স রয়েছে:

লেবেল $out | ... ব্রেক আউট ...

সার্জারির বিরতি $label_name অভিব্যক্তি প্রোগ্রামটিকে নিকটতমের মতো কাজ করবে
(বামে) লেবেল $label_name উত্পাদিত খালি.

মধ্যে সম্পর্ক বিরতি এবং সংশ্লিষ্ট লেবেল আভিধানিক হয়: লেবেল হতে হবে
বিরতি থেকে "দৃশ্যমান"।

একটি থেকে ভেঙ্গে বেরিয়ে আসা হ্রাস করা, উদাহরণ স্বরূপ:

লেবেল $out | হ্রাস করুন [] $item হিসাবে (null; if .==false তারপর $out else... end)

নিম্নলিখিত jq প্রোগ্রামটি একটি সিনট্যাক্স ত্রুটি তৈরি করে:

ভাঙ্গন $আউট

কারণ কোন লেবেল নেই $আউট দৃশ্যমান.

? অপারেটর
সার্জারির ? অপারেটর, হিসাবে ব্যবহৃত EXP?, এর জন্য সংক্ষিপ্ত বিবরণ চেষ্টা EXP.

jq ´[[]|(.a)?]'
[{}, সত্য, {"a":1}]
=> [শূন্য, 1]

নিয়মিত অভিব্যক্তি (PCRE)


jq ওনিগুরুমা রেগুলার এক্সপ্রেশন লাইব্রেরি ব্যবহার করে, যেমন পিএইচপি, রুবি, টেক্সটমেট, সাবলাইম টেক্সট,
ইত্যাদি, তাই এখানে বর্ণনা jq স্পেসিফিকেশনের উপর ফোকাস করবে।

jq regex ফিল্টারগুলি সংজ্ঞায়িত করা হয়েছে যাতে সেগুলি এই প্যাটার্নগুলির মধ্যে একটি ব্যবহার করে ব্যবহার করা যেতে পারে:

STRING | ফিল্টার ( REGEX )
STRING | ফিল্টার ( REGEX ; পতাকা )
STRING | ফিল্টার ( [REGEX] )
STRING | ফিল্টার ( [REGEX, ফ্ল্যাগস] )

যেখানে: * STRING, REGEX এবং FLAGS হল jq স্ট্রিং এবং jq স্ট্রিং ইন্টারপোলেশন সাপেক্ষে; *
REGEX, স্ট্রিং ইন্টারপোলেশনের পরে, একটি বৈধ PCRE regex হওয়া উচিত; * ফিল্টার হল একটি পরীক্ষা,
ম্যাচ, বা গ্রেপ্তার, যেভাবে নিচে বর্ণীত.

FLAGS হল একটি স্ট্রিং যা সমর্থিত ফ্ল্যাগগুলির মধ্যে একটি নিয়ে গঠিত:

· g - বিশ্বব্যাপী অনুসন্ধান (সমস্ত মিল খুঁজুন, শুধু প্রথম নয়)

· i - কেস সংবেদনশীল অনুসন্ধান

· m - মাল্টি লাইন মোড ('.' নতুন লাইনের সাথে মিলবে)

· n - খালি ম্যাচ উপেক্ষা করুন

· p - উভয় s এবং m মোড সক্রিয় করা হয়েছে

· s - একক লাইন মোড (´^´ -> ´\A´, ´$´ -> ´\Z´)

· l - দীর্ঘতম সম্ভাব্য ম্যাচ খুঁজুন

· x - বর্ধিত রেজেক্স বিন্যাস (হোয়াইটস্পেস এবং মন্তব্য উপেক্ষা করুন)

একটি x প্যাটার্নে হোয়াইটস্পেস মেলানোর জন্য একটি এস্কেপ ব্যবহার করুন যেমন \s, যেমন

· পরীক্ষা ("a\sb", "x")।

উল্লেখ্য যে নির্দিষ্ট পতাকাগুলি REGEX-এর মধ্যেও নির্দিষ্ট করা যেতে পারে, যেমন

· jq -n ´("পরীক্ষা", "টেস্ট", "টেস্ট", "টেস্ট") | পরীক্ষা("(?i)te(?-i)st" )´

মূল্যায়ন করে: সত্য, সত্য, মিথ্যা, মিথ্যা।

[প্রয়োজন 1.5] পরীক্ষা(val), পরীক্ষা (regex; পতাকা)
মত ম্যাচ, কিন্তু মিল বস্তু ফেরত না, শুধুমাত্র সত্য or মিথ্যা কিনা বা না জন্য
regex ইনপুট মেলে.

jq ´test("foo")´
"ফু"
=> সত্য

jq ´ [] | পরীক্ষা("abc # স্পেস উপেক্ষা করা হয়"; "ix")´
["xabcd", "ABC"]
=> সত্য, সত্য

[প্রয়োজন 1.5] ম্যাচ(val), ম্যাচ(regex; পতাকা)
ম্যাচ এটি খুঁজে পাওয়া প্রতিটি ম্যাচের জন্য একটি বস্তুকে আউটপুট করে। ম্যাচের নিম্নলিখিত ক্ষেত্র রয়েছে:

· অফসেট - ইনপুটের শুরু থেকে UTF-8 কোডপয়েন্টে অফসেট

· লম্বা - ম্যাচের UTF-8 কোডপয়েন্টে দৈর্ঘ্য

· স্ট্রিং - যে স্ট্রিংটি মিলেছে

· ক্যাচ - ক্যাপচারিং গ্রুপের প্রতিনিধিত্বকারী বস্তুর একটি অ্যারে।

গ্রুপ অবজেক্ট ক্যাপচার করার নিম্নলিখিত ক্ষেত্র রয়েছে:

· অফসেট - ইনপুটের শুরু থেকে UTF-8 কোডপয়েন্টে অফসেট

· লম্বা - এই ক্যাপচারিং গ্রুপের UTF-8 কোডপয়েন্টে দৈর্ঘ্য

· স্ট্রিং - যে স্ট্রিংটি ক্যাপচার করা হয়েছিল

· নাম - ক্যাপচারিং গ্রুপের নাম (বা অকার্যকর নাম না থাকলে)

কোনো কিছুর সাথে মেলেনি এমন গ্রুপ ক্যাপচার করা -1 অফসেট ফেরত দেয়

jq ´match("(abc)+"; "g")´
"abc abc"
=> {"অফসেট": 0, "দৈর্ঘ্য": 3, "স্ট্রিং": "abc", "ক্যাপচার": [{"অফসেট": 0, "দৈর্ঘ্য": 3, "স্ট্রিং": "abc", " name": null}]}, {"offset": 4, "length": 3, "string": "abc", "captures": [{"offset": 4, "length": 3, "string" : "abc", "নাম": null}]}

jq ´match("foo")´
"ফু বার ফু"
=> {"অফসেট": 0, "দৈর্ঘ্য": 3, "স্ট্রিং": "foo", "ক্যাপচার": []}

jq ´match(["foo", "ig"])´
"ফু বার এফওও"
=> {"অফসেট": 0, "দৈর্ঘ্য": 3, "স্ট্রিং": "foo", "ক্যাপচার": []}, {"অফসেট": 8, "দৈর্ঘ্য": 3, "স্ট্রিং": "FOO ", "ক্যাপচার": []}

jq ´ ম্যাচ ("foo (? বার)? foo"; "ig")´
"ফু বার ফু ফু ফু"
=> {"অফসেট": 0, "দৈর্ঘ্য": 11, "স্ট্রিং": "ফু বার ফু", "ক্যাপচার": [{"অফসেট": 4, "দৈর্ঘ্য": 3, "স্ট্রিং": "বার" , "name": "bar123"}]}, {"offset": 12, "length": 8, "string": "foo foo", "captures": [{"offset": -1, "length" : 0, "স্ট্রিং": নাল, "নাম": "বার123"}]}

jq ´[ মিল("."; "g")] | দৈর্ঘ্য'
"abc"
=> 3

[প্রয়োজন 1.5] ক্যাপচার (ভাল), ক্যাপচার (regex; পতাকা)
একটি JSON অবজেক্টে নামযুক্ত ক্যাপচারগুলি সংগ্রহ করে, প্রতিটি ক্যাপচারের নাম কী হিসাবে,
এবং মিলিত স্ট্রিং সংশ্লিষ্ট মান হিসাবে।

jq ´capture("(? [az]+)-(? [০-৯]+)")´
"xyzzy-14"
=> { "a": "xyzzy", "n": "14" }

[প্রয়োজন 1.5] স্ক্যান (রেজেক্স), স্ক্যান (রেজেক্স; পতাকা)
ইনপুটের অ-ওভারল্যাপিং সাবস্ট্রিংগুলির একটি স্ট্রীম নির্গত করুন যা রেজেক্স-এর সাথে মেলে
পতাকা অনুযায়ী, যদি কোন নির্দিষ্ট করা হয়েছে. মিল না থাকলে স্রোত
খালি প্রতিটি ইনপুট স্ট্রিংয়ের জন্য সমস্ত মিল ক্যাপচার করতে, বাগধারাটি ব্যবহার করুন [ এক্সপ্রেস ], উদাহরণস্বরূপ [
স্ক্যান (রেজেক্স) ].

বিভক্ত (regex; পতাকা)
পিছনের সামঞ্জস্যের জন্য, বিভক্ত করা একটি স্ট্রিং এ বিভক্ত, একটি regex নয়।

[প্রয়োজন 1.5] বিভক্ত (regex), বিভক্ত (regex; পতাকা)
এই তাদের হিসাবে একই ফলাফল প্রদান বিভক্ত করা প্রতিপক্ষ, কিন্তু একটি পরিবর্তে একটি স্ট্রীম হিসাবে
অ্যারে।

[প্রয়োজন 1.5] উপ(regex; স্ট্রিং) উপ(regex; স্ট্রিং পতাকা)
ইনপুট স্ট্রিং-এ regex-এর প্রথম ম্যাচ প্রতিস্থাপন করে প্রাপ্ত স্ট্রিংটি নির্গত করুন
স্ট্রিং, ইন্টারপোলেশন পরে। স্ট্রিং একটি jq স্ট্রিং হওয়া উচিত, এবং রেফারেন্স থাকতে পারে
নামধারী ক্যাপচারে। নামযুক্ত ক্যাপচারগুলি, কার্যত, একটি JSON অবজেক্ট হিসাবে উপস্থাপিত হয় (যেমন
দ্বারা নির্মিত গ্রেপ্তার) থেকে স্ট্রিং, তাই "x" নামের একটি ক্যাপচার করা ভেরিয়েবলের একটি রেফারেন্স হবে
ফর্মটি নিন: "(.x)"।

[প্রয়োজন 1.5] gsub(regex; স্ট্রিং), gsub(regex; স্ট্রিং পতাকা)
gsub মত উপ কিন্তু regex-এর সমস্ত নন-ওভারল্যাপিং ঘটনাগুলি দ্বারা প্রতিস্থাপিত হয়
স্ট্রিং, ইন্টারপোলেশনের পরে।

উন্নত বৈশিষ্ট্য


বেশিরভাগ প্রোগ্রামিং ভাষাতে ভেরিয়েবল একটি পরম প্রয়োজনীয়তা, কিন্তু সেগুলিকে ছেড়ে দেওয়া হয়
jq-তে একটি "উন্নত বৈশিষ্ট্য"-এ।

বেশীরভাগ ভাষায়, ভেরিয়েবল হল ডেটার চারপাশে পাস করার একমাত্র মাধ্যম। হিসাব করলে ক
মান, এবং আপনি এটি একাধিকবার ব্যবহার করতে চান, আপনাকে এটি একটি ভেরিয়েবলে সংরক্ষণ করতে হবে। প্রতি
প্রোগ্রামের অন্য অংশে একটি মান পাস করুন, আপনার প্রোগ্রামের সেই অংশের প্রয়োজন হবে
একটি ভেরিয়েবল সংজ্ঞায়িত করুন (একটি ফাংশন প্যারামিটার, অবজেক্ট মেম্বার, বা যাই হোক না কেন) যেখানে রাখা হবে
তথ্যটি.

এটি jq-তে ফাংশন সংজ্ঞায়িত করাও সম্ভব, যদিও এটি এমন একটি বৈশিষ্ট্য যার সবচেয়ে বড়
ব্যবহার jq এর স্ট্যান্ডার্ড লাইব্রেরি সংজ্ঞায়িত করছে (অনেক jq ফাংশন যেমন মানচিত্র এবং আবিষ্কার আসলে হয়
jq এ লেখা)।

jq এর রিডাকশন অপারেটর আছে, যেগুলো খুবই শক্তিশালী কিন্তু একটু কঠিন। আবার, এই হয়
বেশিরভাগই অভ্যন্তরীণভাবে ব্যবহৃত হয়, jq এর স্ট্যান্ডার্ড লাইব্রেরির কিছু দরকারী বিট সংজ্ঞায়িত করতে।

এটি প্রথমে স্পষ্ট নাও হতে পারে, তবে jq সব জেনারেটর সম্পর্কে (হ্যাঁ, প্রায়শই পাওয়া যায়
অন্যান্য ভাষাসমূহ). জেনারেটর মোকাবেলায় সাহায্য করার জন্য কিছু ইউটিলিটি প্রদান করা হয়।

কিছু ন্যূনতম I/O সমর্থন (স্ট্যান্ডার্ড ইনপুট থেকে JSON পড়ার পাশাপাশি, এবং এতে JSON লেখা
স্ট্যান্ডার্ড আউটপুট) উপলব্ধ।

অবশেষে, একটি মডিউল/লাইব্রেরি সিস্টেম আছে।

ভেরিয়েবল
jq-তে, সমস্ত ফিল্টারে একটি ইনপুট এবং একটি আউটপুট থাকে, তাই ম্যানুয়াল প্লাম্বিংয়ের প্রয়োজন হয় না
একটি প্রোগ্রামের একটি অংশ থেকে পরের অংশে একটি মান পাস করুন। অনেক এক্সপ্রেশন, উদাহরণস্বরূপ a + b,
তাদের ইনপুট দুটি স্বতন্ত্র সাব এক্সপ্রেশনে প্রেরণ করুন (এখানে a এবং b উভয় একই পাস
ইনপুট), তাই একটি মান দুইবার ব্যবহার করার জন্য সাধারণত ভেরিয়েবলের প্রয়োজন হয় না।

উদাহরণস্বরূপ, সংখ্যার একটি অ্যারের গড় মান গণনা করার জন্য কয়েকটি প্রয়োজন
বেশিরভাগ ভাষায় ভেরিয়েবল - অ্যারে ধরে রাখার জন্য কমপক্ষে একটি, সম্ভবত প্রতিটি উপাদানের জন্য একটি
অথবা একটি লুপ কাউন্টারের জন্য। jq, এটা সহজ যোগ / লম্বা - দ্য যোগ অভিব্যক্তি দেওয়া হয়
অ্যারে এবং তার যোগফল উত্পাদন করে, এবং লম্বা এক্সপ্রেশনটি অ্যারে দেওয়া হয় এবং এটি তৈরি করে
দৈর্ঘ্য।

সুতরাং, সাধারণত ভেরিয়েবল সংজ্ঞায়িত করার চেয়ে jq-তে বেশিরভাগ সমস্যা সমাধানের একটি পরিষ্কার উপায় রয়েছে।
তবুও, কখনও কখনও তারা জিনিসগুলিকে সহজ করে তোলে, তাই jq আপনাকে ভেরিয়েবল ব্যবহার করে সংজ্ঞায়িত করতে দেয়
অভিব্যক্তি as $ পরিবর্তনশীল. সমস্ত পরিবর্তনশীল নাম দিয়ে শুরু হয় $. এখানে একটি সামান্য কুশ্রী সংস্করণ
অ্যারে-গড় উদাহরণের:

দৈর্ঘ্য $array_length | যোগ করুন / $array_length

আসলে ভেরিয়েবল ব্যবহার করে এমন একটি পরিস্থিতি খুঁজতে আমাদের আরও জটিল সমস্যার প্রয়োজন হবে
আমাদের জীবন সহজ করে তোলে।

ধরুন আমাদের কাছে "লেখক" এবং "শিরোনাম" ক্ষেত্র সহ ব্লগ পোস্টের একটি অ্যারে রয়েছে এবং অন্যটি
অবজেক্ট যা লেখক ব্যবহারকারীর নামগুলিকে প্রকৃত নামে ম্যাপ করতে ব্যবহৃত হয়। আমাদের ইনপুট এর মত দেখাচ্ছে:

{"posts": [{"title": "Frist psot", "author": "anon"},
{"title": "একটি সুলিখিত নিবন্ধ", "লেখক": "ব্যক্তি1"}],
"realnames": {"anon": "বেনামী কাপুরুষ",
"person1": "ব্যক্তি ম্যাকফারসন"}}

আমরা লেখক ক্ষেত্রের একটি আসল নাম সহ পোস্ট তৈরি করতে চাই, যেমন:

{"title": "Frist psot", "author": "বেনামী কাপুরুষ"}
{"title": "একটি সুলিখিত নিবন্ধ", "লেখক": "ব্যক্তি ম্যাকফারসন"}

আমরা একটি ভেরিয়েবল ব্যবহার করি, $names, realnames অবজেক্ট সংরক্ষণ করতে, যাতে আমরা পরে এটি উল্লেখ করতে পারি
লেখক ব্যবহারকারীর নাম খুঁজছেন যখন:

.realnames as $names | .পোস্ট[] | {শিরোনাম, লেখক: $names[.author]}

এখনও বিক্রয়ের জন্য মেপুঃ as $x | ... মানে: অভিব্যক্তির প্রতিটি মানের জন্য মেপুঃ, বাকি চালান
সম্পূর্ণ মূল ইনপুট সহ পাইপলাইন, এবং সঙ্গে $x যে মান সেট. এইভাবে as
একটি foreach লুপ কিছু হিসাবে ফাংশন.

এই রকম {foo} লেখার একটি সহজ উপায় {foo: .foo}, তাই {$foo} লেখার একটি সহজ উপায়
{foo:$foo}.

একাধিক ভেরিয়েবল একক ব্যবহার করে ঘোষণা করা যেতে পারে as একটি প্যাটার্ন প্রদান করে অভিব্যক্তি
যেটি ইনপুটের কাঠামোর সাথে মেলে (এটি "ডিস্ট্রাকচারিং" নামে পরিচিত):

. হিসাবে {realnames: $names, posts: [$first, $second]} | ...

অ্যারে প্যাটার্নে পরিবর্তনশীল ঘোষণা (যেমন, . as [$প্রথম, $সেকেন্ড]) আবদ্ধ
সূচক শূন্য এ উপাদান থেকে অ্যারের উপাদান, ক্রমানুসারে। যখন নেই
একটি অ্যারের প্যাটার্ন উপাদানের জন্য সূচকে মান, অকার্যকর যে পরিবর্তনশীল আবদ্ধ.

ভেরিয়েবলগুলি বাকি এক্সপ্রেশনের উপর স্কোপ করা হয় যা তাদের সংজ্ঞায়িত করে, তাই

.realnames as $names | (.posts[] | {শিরোনাম, লেখক: $names[.author]})

কাজ করবে, কিন্তু

(.realnames as $names | .posts[]) | {শিরোনাম, লেখক: $names[.author]}

হবে না

প্রোগ্রামিং ভাষা তাত্ত্বিকদের জন্য, এটা বলা আরও সঠিক যে jq ভেরিয়েবল
আভিধানিকভাবে ব্যাপ্ত বাঁধাই। বিশেষ করে বাইন্ডিং এর মান পরিবর্তন করার কোন উপায় নেই;
কেউ শুধুমাত্র একই নামের সাথে একটি নতুন বাঁধাই সেটআপ করতে পারে, কিন্তু যেখানে দৃশ্যমান হবে না
পুরানো এক ছিল.

jq ´.বার $x | হিসাবে .foo | . + $x´
{"foo":10, "বার":200}
=> 210

jq ´। $i|[(.*2|. হিসাবে $i| $i), $i]'
5
=> [১,২,৩,৪]

jq ´। যেমন [$a, $b, {c: $c}] | $a + $b + $c´
[2, 3, {"c": 4, "d": 5}]
=> 9

jq ´.[] হিসাবে [$a, $b] | {a: $a, b: $b}'
[[০], [০, ১], [২, ১, ০]]
=> {"a":0,"b":null}, {"a":0,"b":1}, {"a":2,"b":1}

সংজ্ঞা কার্যাবলী
আপনি "def" সিনট্যাক্স ব্যবহার করে একটি ফিল্টারকে একটি নাম দিতে পারেন:

def বৃদ্ধি: . +1;

তারপর থেকে, বৃদ্ধি একটি বিল্টইন ফাংশনের মতোই ফিল্টার হিসাবে ব্যবহারযোগ্য (আসলে, এটি
কিছু বিল্টিন কিভাবে সংজ্ঞায়িত করা হয়)। একটি ফাংশন আর্গুমেন্ট নিতে পারে:

def মানচিত্র(f): [[] | চ];

আর্গুমেন্ট ফিল্টার হিসাবে পাস করা হয়, মান হিসাবে নয়। একই যুক্তি উল্লেখ করা যেতে পারে
বিভিন্ন ইনপুট সহ একাধিক বার (এখানে f ইনপুট অ্যারের প্রতিটি উপাদানের জন্য চালানো হয়)।
একটি ফাংশনের আর্গুমেন্ট মান আর্গুমেন্টের চেয়ে কলব্যাকের মত কাজ করে। এই
বোঝা গুরুত্বপূর্ণ। বিবেচনা:

def foo(f): f|f;
5|foo(.*2)

ফলাফল হবে 20 কারণ f is .*2, এবং এর প্রথম আহ্বানের সময় f . 5 হবে,
এবং দ্বিতীয়বার এটি হবে 10 (5 * 2), তাই ফলাফল হবে 20। ফাংশন আর্গুমেন্ট
ফিল্টার হয়, এবং ফিল্টার আমন্ত্রণ জানানো হলে একটি ইনপুট আশা করে।

আপনি যদি সাধারণ ফাংশন সংজ্ঞায়িত করার জন্য মান-যুক্তি আচরণ চান তবে আপনি কেবল একটি ব্যবহার করতে পারেন
পরিবর্তনশীল:

def addvalue(f): f হিসেবে $f | মানচিত্র(. + $f);

অথবা শর্ট-হ্যান্ড ব্যবহার করুন:

def addvalue($f): ...;

উভয় সংজ্ঞা সহ, addvalue(.foo) বর্তমান ইনপুট যোগ করবে .foo প্রতিটি ক্ষেত্র
অ্যারের উপাদান।

একই ফাংশনের নাম ব্যবহার করে একাধিক সংজ্ঞা অনুমোদিত। প্রতিটি পুনরায় সংজ্ঞা প্রতিস্থাপন করে
আগেরটি একই সংখ্যক ফাংশন আর্গুমেন্টের জন্য, কিন্তু শুধুমাত্র রেফারেন্সের জন্য
ফাংশন (বা প্রধান প্রোগ্রাম) পুনরায় সংজ্ঞা পরবর্তী.

jq ´def addvalue(f):। + [চ]; মানচিত্র(addvalue([0]))'
[[১,৮৭],[২,৮৮]]
=> [[1,2,1], [10,20,10]]

jq ´def addvalue(f): f হিসেবে $x | মানচিত্র(. + $x); addvalue([0])'
[[১,৮৭],[২,৮৮]]
=> [[1,2,1,2], [10,20,1,2]]

হ্রাস করা
সার্জারির হ্রাস করা jq-এ সিনট্যাক্স আপনাকে একটি এক্সপ্রেশনের সমস্ত ফলাফল একত্রিত করতে দেয়
একটি একক উত্তর মধ্যে তাদের জমা. উদাহরণ হিসাবে, আমরা পাস করব [3,2,1] এই
অভিব্যক্তি:

হ্রাস করুন [] হিসাবে $item (0; . + $item)

প্রতিটি ফলাফলের জন্য যে [] উৎপাদন করে, . + $আইটেম একটি চলমান মোট জমা করার জন্য চালানো হয়,
0 থেকে শুরু। এই উদাহরণে, [] ফলাফল 3, 2, এবং 1 তৈরি করে, তাই প্রভাব হল
এই মত কিছু চালানোর অনুরূপ:

0 | ($ আইটেম হিসাবে 3 | . + $ আইটেম) |
($ আইটেম হিসাবে 2 | . + $ আইটেম) |
($ আইটেম হিসাবে 1 | . + $ আইটেম)

jq ´reduce [] as $item (0; . + $item)´
[10,2,5,3]
=> 20

সীমা (n; মেয়াদ)
সার্জারির সীমা ফাংশন পর্যন্ত নির্যাস n থেকে আউটপুট মেপুঃ.

jq ´[সীমা(3; [])]'
[0,1,2,3,4,5,6,7,8,9]
=> [১,২,৩,৪]

প্রথম (এক্সপ্র), শেষ (এক্সপ্র), nth(n; এক্সপ্র)
সার্জারির প্রথম (প্রথম) এবং শেষ (এক্সপ্র) ফাংশনগুলি থেকে প্রথম এবং শেষ মান বের করে এক্সপ্রেস,
যথাক্রমে.

সার্জারির nth(n; এক্সপ্র) ফাংশন দ্বারা nম মানের আউটপুট বের করে এক্সপ্রেস. এই হিসাবে সংজ্ঞায়িত করা যেতে পারে
Def nth(n; expr): শেষ(সীমা(n + 1; expr));। মনে রাখবেন যে nth(n; এক্সপ্র) সমর্থন করে না
এর নেতিবাচক মান n.

jq ´[প্রথম(পরিসীমা(.)), শেষ(সীমা(.)), nth(./2; পরিসীমা(.))]´
10
=> [১,২,৩,৪]

প্রথম, শেষ, nth(n)
সার্জারির প্রথম এবং গত ফাংশন যেকোনো অ্যারে থেকে প্রথম এবং শেষ মান বের করে ..

সার্জারির nth(n) ফাংশন যেকোন অ্যারের nম মান at extract করে ..

jq ´[পরিসীমা(.)]|[প্রথম, শেষ, n তম(5)]'
10
=> [১,২,৩,৪]

প্রতিটির জন্য
সার্জারির প্রতিটির জন্য সিনট্যাক্স অনুরূপ হ্রাস করা, কিন্তু নির্মাণের অনুমতি দেওয়ার উদ্দেশ্যে সীমা
এবং মধ্যবর্তী ফলাফল উত্পাদনকারী হ্রাসকারী (উদাহরণ দেখুন)।

ফর্ম হল প্রতিটির জন্য EXP as $var (এটা; হালনাগাদ; নির্যাস)। মত হ্রাস করা, INIT মূল্যায়ন করা হয়
একবার একটি রাষ্ট্র মান উত্পাদন, তারপর প্রতিটি আউটপুট EXP আবদ্ধ হয় $var, হালনাগাদ is
প্রতিটি আউটপুট জন্য মূল্যায়ন EXP বর্তমান অবস্থা এবং সঙ্গে $var দৃশ্যমান প্রতিটি মান
দ্বারা আউটপুট হালনাগাদ আগের অবস্থা প্রতিস্থাপন করে। অবশেষে, নির্যাস প্রতিটি নতুন জন্য মূল্যায়ন করা হয়
একটি আউটপুট নিষ্কাশন করতে রাষ্ট্র প্রতিটির জন্য.

এটি বেশিরভাগই শুধুমাত্র নির্মাণের জন্য দরকারী হ্রাস করা- এবং সীমা- মত ফাংশন। কিন্তু এটা
অনেক বেশি সাধারণ, কারণ এটি আংশিক হ্রাসের অনুমতি দেয় (নীচের উদাহরণ দেখুন)।

jq ´[foreach [] হিসাবে $item ([[],[]]; যদি $item == null তারপর [[], [0]] অন্য [([0] + [$item]),[ ]] শেষ; যদি $item == null হয় তবে [1] অন্য খালি শেষ)]'
[1,2,3,4,নাল,"a","b", null]
=> [[1,2,3,4],["a","b"]]

recursion
উপরে বর্ণিত, পুনরাবৃত্তি পুনরাবৃত্তি ব্যবহার করে, এবং যেকোন jq ফাংশন পুনরাবৃত্ত হতে পারে। দ্য
যখন বিল্টইন পুনরাবৃত্তির ক্ষেত্রেও প্রয়োগ করা হয়।

টেল কল অপ্টিমাইজ করা হয় যখনই রিকারসিভ কল আউটপুটের বাম দিকে অভিব্যক্তি
এর শেষ মান। অনুশীলনে এর অর্থ হল রিকারসিভের বাম দিকের অভিব্যক্তি
কল প্রতিটি ইনপুটের জন্য একাধিক আউটপুট তৈরি করা উচিত নয়।

উদাহরণ স্বরূপ:

def recurse(f): def r: ., (f | নির্বাচন করুন(. != null) | r); r;

def while(cond; update):
def _while:
যদি cond তারপর., (আপডেট | _while) else খালি শেষ;
_যখন;

def পুনরাবৃত্তি (exp):
def _repeat:
exp, _পুনরাবৃত্তি;
_পুনরাবৃত্তি;

জেনারেটর এবং পুনরাবৃত্তিকারী
কিছু jq অপারেটর এবং ফাংশন আসলে জেনারেটর যে তারা শূন্য উত্পাদন করতে পারে,
প্রতিটি ইনপুটের জন্য এক বা একাধিক মান, যেমনটি অন্য প্রোগ্রামিংয়ে আশা করতে পারে
যে ভাষায় জেনারেটর আছে। উদাহরণ স্বরূপ, [] এর ইনপুটে সমস্ত মান তৈরি করে
(যা একটি অ্যারে বা একটি বস্তু হতে হবে), পরিসীমা (0; 10) 0 এবং এর মধ্যে পূর্ণসংখ্যা তৈরি করে
10, এবং আরও।

এমনকি কমা অপারেটরও একটি জেনারেটর, যা প্রথমে উত্পন্ন মানগুলি তৈরি করে
কমার বাম দিকে অভিব্যক্তি, তারপর তাদের প্রত্যেকের জন্য, মানগুলি দ্বারা উৎপন্ন হয়
কমার ডানদিকে অভিব্যক্তি।

সার্জারির খালি বিল্টইন হল জেনারেটর যা শূন্য আউটপুট উত্পাদন করে। দ্য খালি builtin
পূর্ববর্তী জেনারেটর এক্সপ্রেশনে ব্যাকট্র্যাক।

সমস্ত jq ফাংশন শুধুমাত্র বিল্টইন জেনারেটর ব্যবহার করে জেনারেটর হতে পারে। এটাও সম্ভব
শুধুমাত্র পুনরাবৃত্তি এবং কমা অপারেটর ব্যবহার করে নতুন জেনারেটর সংজ্ঞায়িত করতে। যদি পুনরাবৃত্ত
কল(গুলি) হল(গুলি) "টেইল পজিশনে" তাহলে জেনারেটরটি দক্ষ হবে৷ উদাহরণে
দ্বারা recursive কল নীচে _পরিসীমা নিজেই লেজ অবস্থানে আছে. উদাহরণ দেখায় বন্ধ
তিনটি উন্নত বিষয়: টেইল রিকারশন, জেনারেটর নির্মাণ এবং সাব-ফাংশন।

jq ´def রেঞ্জ(init; পর্যন্ত; দ্বারা): def _range: যদি (দ্বারা > 0 এবং . < পর্যন্ত) অথবা (দ্বারা < 0 এবং . > পর্যন্ত) তারপর ., ((.+বাই)|_রেঞ্জ) অন্য। শেষ; যদি == 0 দ্বারা হয় তাহলে init else init|_range end | নির্বাচন করুন((> 0 এবং . < পর্যন্ত) বা (দ্বারা < 0 এবং . > পর্যন্ত)); পরিসীমা(0; 10; 3)''
অকার্যকর
=> 0, 3, 6, 9

jq ´def while(cond; update): def _while: if cond then., (update | _while) else empty end; _যখন; [যখন(.<100; .*2)]'
1
=> [১,২,৩,৪]

গণিত


jq-এ বর্তমানে শুধুমাত্র IEEE754 ডাবল-নির্ভুলতা (64-বিট) ফ্লোটিং পয়েন্ট নম্বর সমর্থন রয়েছে।

যেমন সহজ পাটিগণিত অপারেটর ছাড়াও +, jq-এরও বেশিরভাগ মানক গণিত ফাংশন রয়েছে
সি গণিত লাইব্রেরি থেকে। সি গণিত ফাংশন যা একটি একক ইনপুট আর্গুমেন্ট নেয় (যেমন, পাপ())
শূন্য-আর্গুমেন্ট jq ফাংশন হিসাবে উপলব্ধ। C গণিত ফাংশন যা দুটি ইনপুট নেয়
যুক্তি (যেমন, pow()) দুই-আর্গুমেন্ট jq ফাংশন হিসাবে উপলব্ধ যা উপেক্ষা করে ..

মানক গণিত ফাংশনের প্রাপ্যতা সংশ্লিষ্টদের প্রাপ্যতার উপর নির্ভর করে
আপনার অপারেটিং সিস্টেম এবং সি গণিত লাইব্রেরিতে গণিত ফাংশন। অনুপলব্ধ গণিত ফাংশন
সংজ্ঞায়িত করা হবে কিন্তু একটি ত্রুটি বাড়াবে।

ইনপুট / আউটপুট


এই সময়ে jq-এর I/O-এর জন্য ন্যূনতম সমর্থন রয়েছে, বেশিরভাগ কখন নিয়ন্ত্রণের আকারে
ইনপুট পড়া হয়। এর জন্য দুটি বিল্টইন ফাংশন প্রদান করা হয়েছে, ইনপুট এবং ইনপুট, যে পড়া
একই উত্স থেকে (যেমন, stdin, কমান্ড-লাইনে নাম দেওয়া ফাইল) jq নিজেই। এইগুলো
দুটি বিল্টিন এবং jq এর নিজস্ব রিডিং অ্যাকশন একে অপরের সাথে ইন্টারলিভ করা যেতে পারে।

একটি বিল্টইন ন্যূনতম আউটপুট ক্ষমতা প্রদান করে, ডেবাগ্ করা. (স্মরণ করুন যে একটি jq প্রোগ্রাম
আউটপুট মান সবসময় JSON পাঠ্য হিসাবে আউটপুট চালু হয় stdout.) দ্য ডেবাগ্ করা বিল্টইন থাকতে পারে
অ্যাপ্লিকেশন-নির্দিষ্ট আচরণ, যেমন এক্সিকিউটেবলের জন্য যা libjq C API ব্যবহার করে কিন্তু নয়
jq নিজেই এক্সিকিউটেবল।

ইনপুট
একটি নতুন ইনপুট আউটপুট.

ইনপুট
এক এক করে বাকি সব ইনপুট আউটপুট করে।

এটি প্রাথমিকভাবে একটি প্রোগ্রামের ইনপুট কমানোর জন্য দরকারী।

ডেবাগ্ করা
ইনপুট মানের উপর ভিত্তি করে একটি ডিবাগ বার্তা তৈরি করা হয়। jq এক্সিকিউটেবল র্যাপ
সাথে ইনপুট মান ["ডিবাগ:", ] এবং এটি এবং stderr এ একটি নতুন লাইন প্রিন্ট করে,
কম্প্যাক্টভাবে এটি ভবিষ্যতে পরিবর্তন হতে পারে।

input_filename
যে ফাইলটির ইনপুট বর্তমানে ফিল্টার করা হচ্ছে তার নাম প্রদান করে। উল্লেখ্য যে এই হবে
একটি UTF-8 লোকেলে jq চলমান না হলে ভাল কাজ করবে না।

ইনপুট_লাইন_সংখ্যা
বর্তমানে ফিল্টার করা ইনপুটের লাইন নম্বর প্রদান করে।

স্ট্রিমিং


সঙ্গে সঙ্গে --প্রবাহ বিকল্প jq একটি স্ট্রিমিং ফ্যাশনে ইনপুট টেক্সট পার্স করতে পারে, jq-কে অনুমতি দেয়
প্রোগ্রামগুলি পার্সের পরে না হয়ে অবিলম্বে বড় JSON পাঠ্য প্রক্রিয়াকরণ শুরু করে
সম্পূর্ণ করে আপনার যদি 1GB আকারের একটি একক JSON পাঠ্য থাকে তবে এটি স্ট্রিমিং আপনাকে অনুমতি দেবে
এটি আরও দ্রুত প্রক্রিয়া করতে।

যাইহোক, jq প্রোগ্রামের মতো স্ট্রিমিং মোকাবেলা করা সহজ নয় [ ,
] (এবং কয়েকটি অন্যান্য ফর্ম) ইনপুট হিসাবে।

স্ট্রীম পরিচালনা সহজ করতে বেশ কয়েকটি বিল্টইন সরবরাহ করা হয়েছে।

নীচের উদাহরণগুলি এর স্ট্রিম করা ফর্ম ব্যবহার করে [০,[১]], যা হলো
[[0],0],[[1,0],1],[[1,0]],[[1]].

স্ট্রিমিং ফর্ম অন্তর্ভুক্ত [ , ] (যে কোনো স্কেলার মান নির্দেশ করতে, খালি অ্যারে,
বা খালি বস্তু), এবং [ ] (একটি অ্যারে বা বস্তুর শেষ নির্দেশ করতে)। ভবিষ্যৎ
jq-এর ভার্সন দিয়ে চলে --প্রবাহ এবং -সেক যেমন অতিরিক্ত ফর্ম আউটপুট হতে পারে ["ত্রুটি
বার্তা"] যখন একটি ইনপুট পাঠ্য পার্স করতে ব্যর্থ হয়।

truncate_stream(স্ট্রিম_এক্সপ্রেশন)
ইনপুট হিসাবে একটি সংখ্যা গ্রহণ করে এবং এর থেকে পাথ উপাদানগুলির সংশ্লিষ্ট সংখ্যাকে ছেঁটে ফেলে৷
প্রদত্ত স্ট্রিমিং এক্সপ্রেশনের আউটপুটগুলির বাম দিকে।

jq ´[1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]])]´
1
=> [[[0],2],[[0]]]

প্রবাহ থেকে(স্ট্রিম_প্রবাহ)
স্ট্রীম এক্সপ্রেশনের আউটপুটগুলির সাথে সম্পর্কিত আউটপুট মানগুলি।

jq ´fromstream(1|truncate_stream([[0],1],[[1,0],2],[[1,0]],[[1]]))´
অকার্যকর
=> [১,২,৩,৪]

স্ট্রিম
সার্জারির স্ট্রিম বিল্টইন তার ইনপুটের স্ট্রিমড ফর্ম আউটপুট করে।

jq ´। হিসাবে $dot|fromstream($dot|tostream)|.==$dot'
[0,[1,{"a":1},{"b":2}]]
=> সত্য

কার্যভারে


বেশিরভাগ প্রোগ্রামিং ভাষার তুলনায় jq-এ অ্যাসাইনমেন্ট একটু ভিন্নভাবে কাজ করে। jq করে না
কোন কিছুর রেফারেন্স এবং কপির মধ্যে পার্থক্য করুন - দুটি অবজেক্ট বা অ্যারে
হয় সমান বা সমান নয়, "একই বস্তু" বা "না" হওয়ার আর কোনো ধারণা ছাড়াই
একই বস্তু"।

যদি একটি বস্তুর দুটি ক্ষেত্র থাকে যা অ্যারে, .foo এবং .কাফে, এবং আপনি কিছু যোগ করুন
.foo, তারপর .কাফে বড় হবে না। এমনকি যদি আপনি এইমাত্র সেট করেছেন .কাফে = .foo. আপনি যদি ব্যবহার করেন
পাইথন, জাভা, রুবি, জাভাস্ক্রিপ্ট ইত্যাদি ল্যাঙ্গুয়েজ প্রোগ্রামিং করতে হবে তাহলে ভাবতে পারেন
jq এটি অ্যাসাইনমেন্ট করার আগে প্রতিটি বস্তুর সম্পূর্ণ গভীর অনুলিপি করে
(কর্মক্ষমতার জন্য, এটি আসলে তা করে না, তবে এটি সাধারণ ধারণা)।

jq-এর সমস্ত অ্যাসাইনমেন্ট অপারেটরদের বাম দিকে পাথ এক্সপ্রেশন রয়েছে।

=
ফিল্টার .foo = 1 একটি অবজেক্ট ইনপুট হিসাবে গ্রহণ করবে এবং আউটপুট হিসাবে একটি অবজেক্ট তৈরি করবে
"foo" ক্ষেত্রটি 1 এ সেট করা হয়েছে। jq-তে কিছু "পরিবর্তন" বা "পরিবর্তন" করার কোন ধারণা নেই -
সমস্ত jq মান অপরিবর্তনীয়। এই ক্ষেত্রে,

.foo = .বার | .foo.baz = 1

.bar.baz সেট করার পার্শ্ব-প্রতিক্রিয়া থাকবে না 1-এ সেট করা, যেমন দেখতে একই রকম
জাভাস্ক্রিপ্ট, পাইথন, রুবি বা অন্যান্য ভাষায় প্রোগ্রাম করবে। এই ভাষাগুলির থেকে ভিন্ন (কিন্তু
Haskell এবং কিছু অন্যান্য কার্যকরী ভাষার মত), দুটি অ্যারে বা কোন ধারণা নেই
বস্তু হচ্ছে "একই অ্যারে" বা "একই বস্তু"। তারা সমান হতে পারে, বা সমান নয়, কিন্তু
আমরা যদি তাদের একটি পরিবর্তন করি কোন অবস্থাতেই অন্যটি আমাদের পিছনে পরিবর্তন হবে না।

এর মানে হল jq তে বৃত্তাকার মান তৈরি করা অসম্ভব (যেমন একটি অ্যারে যার
প্রথম উপাদান নিজেই)। এটি বেশ ইচ্ছাকৃত, এবং নিশ্চিত করে যে কিছু একটি jq
প্রোগ্রাম উত্পাদন করতে পারেন JSON প্রতিনিধিত্ব করা যেতে পারে.

মনে রাখবেন ´=´ এর বাম দিকের একটি মানকে বোঝায় .। এইভাবে $var.foo = 1 কাজ করবে না
প্রত্যাশিত ($var.foo এর মধ্যে একটি বৈধ বা দরকারী পথ অভিব্যক্তি নয় .); ব্যবহার $var | .foo = 1
পরিবর্তে.

যদি ´=´ এর ডানদিকে একাধিক মান উৎপন্ন করে, তাহলে প্রতিটি মানের জন্য jq হবে
বাম দিকের পাথগুলিকে মানটিতে সেট করুন এবং তারপরে এটি পরিবর্তিত আউটপুট করবে ..
উদাহরণ স্বরূপ, (.a,.b)=পরিসর(২০১০) আউটপুট {"a":0,"b":0}, তারপর {"a":1,"b":1}. হালনাগাদ"
অ্যাসাইনমেন্ট ফর্ম (নীচে দেখুন) এটি করবেন না।

এটাও খেয়াল করুন .a,.b=0 সেট করে না .a এবং .bকিন্তু (.a,.b)=0 উভয় সেট

|=
পাশাপাশি অ্যাসাইনমেন্ট অপারেটর ´=´, jq "আপডেট" অপারেটর ´|=´ প্রদান করে, যা
ডানদিকে একটি ফিল্টার নেয় এবং এর সম্পত্তির জন্য নতুন মান তৈরি করে .
এই এক্সপ্রেশনের মাধ্যমে পুরানো মান চালানোর মাধ্যমে বরাদ্দ করা হচ্ছে। উদাহরণস্বরূপ, .foo |=
.+1 ইনপুটের "foo" প্লাস 1 এ সেট করা "foo" ফিল্ড সহ একটি অবজেক্ট তৈরি করবে।

এই উদাহরণটি ´=´ এবং ´|=´ মধ্যে পার্থক্য দেখাতে হবে:

প্রোগ্রামগুলিতে ´{"a": {"b": 10}, "b": 20}´ ইনপুট প্রদান করুন:

.a = .b .a |= .b

আগেরটি ইনপুটের "a" ক্ষেত্রটিকে ইনপুটের "b" ক্ষেত্রে সেট করবে এবং উত্পাদন করবে
আউটপুট {"a": 20}। পরবর্তীটি ইনপুটের "a" ক্ষেত্রটিকে "a" ক্ষেত্রে সেট করবে
"b" ক্ষেত্র, উৎপন্ন হচ্ছে {"a": 10}।

বাম-হাতের দিক যেকোনো সাধারণ পথের অভিব্যক্তি হতে পারে; দেখা পথ().

মনে রাখবেন ´|=´ এর বাম দিকের একটি মানকে বোঝায় .। এইভাবে $var.foo |= . + 1 হবে না
আশানুরূপ কাজ ($var.foo এর মধ্যে একটি বৈধ বা দরকারী পথ অভিব্যক্তি নয় .); ব্যবহার $var | .foo
|= . + 1 পরিবর্তে.

যদি ডান দিকের একাধিক মান আউটপুট করে, শুধুমাত্র শেষটি ব্যবহার করা হবে।

jq ´(..|select(type=="boolean")) |= যদি। তারপর 1 অন্য 0 শেষ'
[সত্য,মিথ্যা,[5,সত্য,[সত্য,[মিথ্যা]],মিথ্যা]]
=> [1,0,[5,1,[1,[0]],0]]

+=, -=, *=, /=, %=, // =
jq ফর্মটির কয়েকটি অপারেটর রয়েছে a অপ= b, যা সব সমতুল্য a |= . op b। সুতরাং,
+= 1 মান বৃদ্ধি করতে ব্যবহার করা যেতে পারে।

jq ´.foo += 1´
{"foo": 42}
=> {"foo": 43}

জটিল বরাদ্দকরণ
বেশিরভাগ জিনিসের চেয়ে jq অ্যাসাইনমেন্টের বাম দিকে আরও অনেক কিছু অনুমোদিত
ভাষা আমরা ইতিমধ্যে বাম দিকে সাধারণ ক্ষেত্রের অ্যাক্সেস দেখেছি, এবং এটি নেই
আশ্চর্য যে অ্যারে অ্যাক্সেস ঠিক একইভাবে কাজ করে:

.posts[0].title = "JQ ম্যানুয়াল"

আশ্চর্যের মতো যা আসতে পারে তা হল বাম দিকের অভিব্যক্তি একাধিক তৈরি করতে পারে
ফলাফল, ইনপুট নথিতে বিভিন্ন পয়েন্ট উল্লেখ করে:

.posts[].comments |= + ["এটি দুর্দান্ত"]

এই উদাহরণটি প্রতিটি পোস্টের "মন্তব্য" অ্যারেতে "এটি দুর্দান্ত" স্ট্রিংটি যুক্ত করে
ইনপুট (যেখানে ইনপুট একটি ক্ষেত্র "পোস্ট" সহ একটি বস্তু যা পোস্টের একটি অ্যারে)।

যখন jq ´a = b´ এর মতো একটি অ্যাসাইনমেন্টের মুখোমুখি হয়, তখন এটি একটি নির্বাচন করার জন্য নেওয়া "পথ" রেকর্ড করে
একটি কার্যকর করার সময় ইনপুট নথির অংশ। এই পথ তারপর কোন অংশ খুঁজে বের করতে ব্যবহার করা হয়
অ্যাসাইনমেন্ট চালানোর সময় পরিবর্তন করার জন্য ইনপুট। কোন ফিল্টার ব্যবহার করা যেতে পারে
একটি সমান এর বাম-পাশে - ইনপুট থেকে এটি যে পাথ নির্বাচন করবে তা হবে যেখানে
অ্যাসাইনমেন্ট সঞ্চালিত হয়।

এটি একটি খুব শক্তিশালী অপারেশন। ধরুন আমরা ব্যবহার করে ব্লগ পোস্টে একটি মন্তব্য যোগ করতে চেয়েছিলাম
উপরের একই "ব্লগ" ইনপুট। এই সময়, আমরা শুধুমাত্র দ্বারা লিখিত পোস্ট মন্তব্য করতে চান
"স্টেডোলান"। আমরা আগে বর্ণিত "নির্বাচন" ফাংশন ব্যবহার করে সেই পোস্টগুলি খুঁজে পেতে পারি:

.পোস্ট[] | নির্বাচন করুন(.author == "stedolan")

এই অপারেশন দ্বারা প্রদত্ত পথগুলি "স্টেডোলান" লিখেছে এমন প্রতিটি পোস্টের দিকে নির্দেশ করে এবং
আমরা তাদের প্রতিটিতে একইভাবে মন্তব্য করতে পারি যেভাবে আমরা আগে করেছি:

(.posts[] | নির্বাচন করুন(.author == "stedolan") | .comments) |=
. + ["ভয়ংকর।"]

মডিউল


jq এর একটি লাইব্রেরি/মডিউল সিস্টেম রয়েছে। মডিউল হল ফাইল যার নাম শেষ হয় .jq.

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

অনুসন্ধান পথের পাথগুলি বিভিন্ন প্রতিস্থাপনের বিষয়।

"~/" দিয়ে শুরু হওয়া পাথগুলির জন্য, ব্যবহারকারীর হোম ডিরেক্টরিটি "~" এর জন্য প্রতিস্থাপিত হয়।

"$ORIGIN/" দিয়ে শুরু হওয়া পাথগুলির জন্য jq এক্সিকিউটেবলের পাথ প্রতিস্থাপিত হয়
"$ORIGIN"।

"./" দিয়ে শুরু হওয়া পাথগুলির জন্য বা "." সহ পাথগুলির জন্য ফাইলের পাথ হল
"" এর জন্য প্রতিস্থাপিত। কমান্ড-লাইনে দেওয়া শীর্ষ-স্তরের প্রোগ্রামগুলির জন্য, বর্তমান
ডিরেক্টরি ব্যবহার করা হয়।

আমদানি নির্দেশাবলী ঐচ্ছিকভাবে একটি অনুসন্ধান পথ নির্দিষ্ট করতে পারে যেখানে ডিফল্ট যুক্ত করা হয়।

ডিফল্ট সার্চ পাথ হল সার্চ পাথকে দেওয়া -L কমান্ড-লাইন বিকল্প, অন্যথায়
["~/.jq", "$ORIGIN/../lib/jq", "$ORIGIN/../ lib"].

নাল এবং খালি স্ট্রিং পাথ উপাদান অনুসন্ধান পথ প্রক্রিয়াকরণ বন্ধ করে দেয়।

আপেক্ষিক পাথ "foo/bar" সহ একটি নির্ভরতা "foo/bar.jq" এ অনুসন্ধান করা হবে এবং
প্রদত্ত অনুসন্ধান পাথে "foo/bar/bar.jq"। এটি মডিউল স্থাপন করার অনুমতি দেওয়ার উদ্দেশ্যে করা হয়েছে
একটি ডিরেক্টরির সাথে, উদাহরণস্বরূপ, সংস্করণ নিয়ন্ত্রণ ফাইল, README ফাইল এবং আরও অনেক কিছু,
কিন্তু একক-ফাইল মডিউলগুলির জন্যও অনুমতি দেয়।

অস্পষ্টতা এড়াতে একই নামের পরপর উপাদান অনুমোদিত নয় (যেমন,
"foo/foo")।

উদাহরণস্বরূপ, সাথে -L$HOME/.jq একটি মডিউল foo বিন্যাস পাওয়া যাবে $HOME/.jq/foo.jq এবং
$HOME/.jq/foo/foo.jq.

যদি "$HOME/.jq" একটি ফাইল হয়, তবে এটি মূল প্রোগ্রামে উৎস করা হয়।

আমদানি RelativePathString as NAME এর [ ];
একটি অনুসন্ধান পাথে একটি ডিরেক্টরির সাপেক্ষে প্রদত্ত পাথে পাওয়া একটি মডিউল আমদানি করে। A ".jq"
প্রত্যয় আপেক্ষিক পাথ স্ট্রিং যোগ করা হবে. মডিউলের চিহ্নগুলির সাথে প্রিফিক্স করা হয়েছে
"নাম::"।

ঐচ্ছিক মেটাডেটা অবশ্যই একটি ধ্রুবক jq এক্সপ্রেশন হতে হবে। এটি কী সহ একটি বস্তু হওয়া উচিত
যেমন "হোমপেজ" এবং তাই। এই সময়ে jq শুধুমাত্র "অনুসন্ধান" কী/এর মান ব্যবহার করে
মেটাডেটা মেটাডেটাও এর মাধ্যমে ব্যবহারকারীদের জন্য উপলব্ধ করা হয় মডিউলমেটা বিল্টইন

মেটাডেটাতে "অনুসন্ধান" কী, যদি উপস্থিত থাকে তবে একটি স্ট্রিং বা অ্যারে মান থাকতে হবে (অ্যারে
স্ট্রিং এর); এটি হল সার্চ পাথ যা টপ-লেভেল সার্চ পাথের সাথে প্রিফিক্স করা হবে।

অন্তর্ভুক্ত করা RelativePathString [ ];
একটি সার্চ পাথে একটি ডিরেক্টরির সাপেক্ষে প্রদত্ত পাথে পাওয়া একটি মডিউল আমদানি করে যেন এটি
জায়গায় অন্তর্ভুক্ত ছিল। আপেক্ষিক পাথ স্ট্রিং-এ একটি ".jq" প্রত্যয় যোগ করা হবে। দ্য
মডিউলের চিহ্নগুলি কলারের নামস্থানে আমদানি করা হয় যেন মডিউলের বিষয়বস্তু ছিল
সরাসরি অন্তর্ভুক্ত করা হয়েছে।

ঐচ্ছিক মেটাডেটা অবশ্যই একটি ধ্রুবক jq এক্সপ্রেশন হতে হবে। এটি কী সহ একটি বস্তু হওয়া উচিত
যেমন "হোমপেজ" এবং তাই। এই সময়ে jq শুধুমাত্র "অনুসন্ধান" কী/এর মান ব্যবহার করে
মেটাডেটা মেটাডেটাও এর মাধ্যমে ব্যবহারকারীদের জন্য উপলব্ধ করা হয় মডিউলমেটা বিল্টইন

আমদানি RelativePathString as $NAME [ ];
একটি অনুসন্ধান পাথের একটি ডিরেক্টরির সাথে সম্পর্কিত প্রদত্ত পাথে পাওয়া একটি JSON ফাইল আমদানি করে। ক
আপেক্ষিক পাথ স্ট্রিং-এ ".json" প্রত্যয় যোগ করা হবে। ফাইলের ডেটা হবে
হিসাবে উপলব্ধ $NAME::NAME.

ঐচ্ছিক মেটাডেটা অবশ্যই একটি ধ্রুবক jq এক্সপ্রেশন হতে হবে। এটি কী সহ একটি বস্তু হওয়া উচিত
যেমন "হোমপেজ" এবং তাই। এই সময়ে jq শুধুমাত্র "অনুসন্ধান" কী/এর মান ব্যবহার করে
মেটাডেটা মেটাডেটাও এর মাধ্যমে ব্যবহারকারীদের জন্য উপলব্ধ করা হয় মডিউলমেটা বিল্টইন

মেটাডেটাতে "অনুসন্ধান" কী, যদি উপস্থিত থাকে তবে একটি স্ট্রিং বা অ্যারে মান থাকতে হবে (অ্যারে
স্ট্রিং এর); এটি হল সার্চ পাথ যা টপ-লেভেল সার্চ পাথের সাথে প্রিফিক্স করা হবে।

মডিউল ;
এই নির্দেশ সম্পূর্ণরূপে ঐচ্ছিক. সঠিক অপারেশনের জন্য এটির প্রয়োজন নেই। এটি পরিবেশন করে
শুধুমাত্র মেটাডেটা প্রদানের উদ্দেশ্য যা এর সাথে পড়া যায় মডিউলমেটা বিল্টইন

মেটাডেটা অবশ্যই একটি ধ্রুবক jq এক্সপ্রেশন হতে হবে। এটা কি মত একটি বস্তু হতে হবে
"হোমপেজ"। এই সময়ে jq এই মেটাডেটা ব্যবহার করে না, তবে এটি ব্যবহারকারীদের জন্য উপলব্ধ করা হয়েছে
মাধ্যমে মডিউলমেটা বিল্টইন

মডিউলমেটা
ইনপুট হিসাবে একটি মডিউল নাম নেয় এবং একটি বস্তু হিসাবে মডিউলের মেটাডেটা আউটপুট করে,
"deps" কী-এর জন্য একটি অ্যারের মান হিসাবে মডিউলের আমদানি (মেটাডেটা সহ)।

প্রোগ্রামগুলি এটিকে একটি মডিউলের মেটাডেটা জিজ্ঞাসা করতে ব্যবহার করতে পারে, যা তারা তখন ব্যবহার করতে পারে
উদাহরণস্বরূপ, অনুপস্থিত নির্ভরতা অনুসন্ধান, ডাউনলোড এবং ইনস্টল করুন।

onworks.net পরিষেবা ব্যবহার করে jq অনলাইন ব্যবহার করুন


বিনামূল্যে সার্ভার এবং ওয়ার্কস্টেশন

উইন্ডোজ এবং লিনাক্স অ্যাপ ডাউনলোড করুন

  • 1
    Zabbix
    Zabbix
    Zabbix হল একটি এন্টারপ্রাইজ-ক্লাস খোলা
    উত্স বিতরণ পর্যবেক্ষণ সমাধান
    নিরীক্ষণ এবং ট্র্যাক করার জন্য ডিজাইন করা হয়েছে
    কর্মক্ষমতা এবং নেটওয়ার্কের প্রাপ্যতা
    সার্ভার, ডিভাইস...
    Zabbix ডাউনলোড করুন
  • 2
    কেডিফ 3
    কেডিফ 3
    এই ভান্ডার আর রক্ষণাবেক্ষণ করা হয় না
    এবং সংরক্ষণাগার উদ্দেশ্যে রাখা হয়. দেখা
    https://invent.kde.org/sdk/kdiff3 for
    নতুন কোড এবং
    https://download.kde.o...
    KDiff3 ডাউনলোড করুন
  • 3
    ইউএসবিলোডারজিএক্স
    ইউএসবিলোডারজিএক্স
    USBLoaderGX এর জন্য একটি GUI
    Waninkoko এর USB লোডার, উপর ভিত্তি করে
    libwiigui. এটা তালিকা এবং অনুমতি দেয়
    Wii গেমস, গেমকিউব গেমস এবং চালু করা হচ্ছে
    Wii এবং WiiU-তে হোমব্রু...
    USBLoaderGX ডাউনলোড করুন
  • 4
    Firebird
    Firebird
    ফায়ারবার্ড RDBMS ANSI SQL বৈশিষ্ট্য অফার করে
    এবং লিনাক্স, উইন্ডোজ এবং চালায়
    বেশ কয়েকটি ইউনিক্স প্ল্যাটফর্ম। বৈশিষ্ট্য
    চমৎকার সঙ্গতি এবং কর্মক্ষমতা
    এবং শক্তি...
    ফায়ারবার্ড ডাউনলোড করুন
  • 5
    KompoZer
    KompoZer
    KompoZer একটি wysiwyg HTML সম্পাদক ব্যবহার করে
    মজিলা কম্পোজার কোডবেস। হিসাবে
    Nvu এর উন্নয়ন বন্ধ করা হয়েছে
    2005 সালে, KompoZer অনেক বাগ সংশোধন করে এবং
    একটি f যোগ করে...
    KompoZer ডাউনলোড করুন
  • 6
    ফ্রি মাঙ্গা ডাউনলোডার
    ফ্রি মাঙ্গা ডাউনলোডার
    ফ্রি মাঙ্গা ডাউনলোডার (FMD) হল একটি
    ওপেন সোর্স অ্যাপ্লিকেশন লেখা
    পরিচালনার জন্য অবজেক্ট-পাসকেল এবং
    বিভিন্ন ওয়েবসাইট থেকে মাঙ্গা ডাউনলোড করা হচ্ছে।
    এটি একটি আয়না...
    বিনামূল্যে মাঙ্গা ডাউনলোডার ডাউনলোড করুন
  • আরও »

লিনাক্স কমান্ডগুলি

Ad