Skip to content

وصفات jq مشروحة

فلاتر jq المستخدمة يوميًا، مرتبة حسب المهمة: الوصول إلى قيمة، والتصفية والتحديد، والتعامل مع المجموعات، وتحويل القيم والسلاسل النصية، وإعادة التشكيل إلى كائن أو مصفوفة جديدة، وتحديث المسارات في مكانها، والتفرع حسب المنطق، والتعامل مع الاختزال المتقدم، بالإضافة إلى أعلام سطر الأوامر التي تشكّل المدخلات والمخرجات. كل صف يجمع الفلتر مع النتيجة التي ينتجها.

jq هو فلتر: يقرأ JSON من stdin، وينفّذ سلسلة من التعبيرات مفصولة بالأنابيب، ويكتب JSON إلى stdout. النقطة هي القيمة الحالية؛ وكل شيء يُبنى عليها. أسرع طريقة للتعلّم هي تمرير بيانات حقيقية عبر الوصفات أدناه ومراقبة المخرجات. شغّلها بصيغة jq 'filter' file.json أو curl ... | jq 'filter'.

جدول مرجعي · 65 إدخالات
65 of 65 rows
الوصول
المُدخل كاملًا، منسقًا للطباعة.
القيمة عند مفتاح، أو عند مفاتيح متداخلة.
القيمة عند مفتاح يحتوي اسمه على أحرف خاصة.
أول عنصر في مصفوفة (الرقم السالب يحسب من النهاية).
كل عنصر في مصفوفة، أو كل قيمة في كائن، كلٌّ في سطر مستقل.
القيمة عند المفتاح، أو null، دون خطأ عندما يكون المفتاح مفقودًا.
التصفية والتحديد
المُدخل دون تغيير إذا كان cond صحيحًا، وإلا فلا شيء.
يطبّق expr على كل عنصر في مصفوفة ويجمع النتائج.
أسماء المفاتيح مرتبةً، أو القيم، لكائن ما في مصفوفة.
طول مصفوفة أو سلسلة نصية، أو عدد المفاتيح في كائن.
العناصر التي تتجاوز أعمارها 18 فقط، في مصفوفة واحدة.
المجموعات
صحيح عندما يكون عنصر واحد على الأقل، أو كل عنصر، truthy أو يجتاز فلترًا.
صحيح عندما يوجد المفتاح k في الكائن؛ وin يجري الاختبار نفسه من جهة المفتاح.
أول عنصر، أو الأخير، أو أول n من مخرجات f فقط.
أصغر قيمة، أو أكبرها، في مصفوفة.
الأرقام من 0 حتى n، كلٌّ منها كمخرج مستقل.
مصفوفات متداخلة مطوية في مصفوفة مسطحة واحدة.
صحيح عندما يظهر x في مكان ما داخل المُدخل؛ وinside يعكس الأدوار.
يطبّق f على كل قيمة من الأسفل إلى الأعلى ثم يعيد بناء المُدخل كاملًا.
التحويل
مصفوفة تحوي حقل price فقط من كل عنصر.
مجموع مصفوفة أرقام، أو دمج مصفوفة كائنات.
يحوّل قيمة إلى سلسلة نصية، أو سلسلة رقمية إلى رقم.
يترجم المُدخل إلى سلسلة JSON أو base64.
سلسلة نصية بأحرف صغيرة.
السلاسل النصية
سلسلة نصية مع قيمة expr مدمجة في النص.
يستبدل كل تطابق للنمط، أو الأول فقط، بـ s.
يقسم سلسلة نصية إلى مصفوفة عند فاصل، أو يلحم مصفوفة في سلسلة واحدة.
يختبر سلسلة نصية مقابل نمط، أو يستخرج التطابقات والأسر المسماة.
يزيل بادئة، أو لاحقة، فقط عندما تكون موجودة.
صحيح أو خطأ: السلسلة تبدأ بـ s، أو تنتهي بها.
سلسلة نصية بأحرف كبيرة.
مصفوفة مرمّزة كصف CSV، أو صف TSV، أو وسائط shell محاطة بعلامات اقتباس.
إعادة التشكيل
كائن جديد يحوي حقلي id وname فقط من المُدخل.
مصفوفة تحوي اسم كل عنصر.
مصفوفة من كائنات {key, value} مشتقة من كائن.
كائن مبني من مصفوفة من كائنات {key, value}.
عناصر مجمّعة في مصفوفات فرعية حسب حقل cat.
يرتب حسب حقل، أو يبقي عنصرًا واحدًا لكل id مميز.
التحديث والمسارات
يحدّث القيمة عند المفتاح بتنفيذ f عليها.
يستبدل القيمة عند المفتاح بـ v.
يضيف n إلى قيمة count، في مكانها.
قراءة القيم أو كتابتها أو حذفها عند مسارات معطاة كمصفوفات.
التحكم والمنطق
a عندما يكون c صحيحًا، وإلا b، مع elif لمزيد من الفروع.
ينفّذ f، وينفّذ g برسالة الخطأ بدلًا منه عندما يفشل f.
يوقف التنفيذ بخطأ يحمل msg، إلا إذا التقطه try.
لا مخرجات على الإطلاق؛ هذا الفرع يختفي ببساطة من النتائج.
يجمع قيم الصواب والخطأ، أو يعكس إحداها.
متقدم
يطوي المصفوفة كلها إلى مجموع واحد متزايد.
مثل reduce، لكنه يُصدر الحالة بعد كل خطوة، لا الأخيرة فقط.
المُدخل التالي، أو كل المدخلات المتبقية، المسحوبة في منتصف الفلتر.
قيمة كنص JSON، أو نص JSON محلولًا обратно إلى قيمة.
نص base64 مفكوك الترميز إلى السلسلة الأصلية.
إسناد في عمق البنية، مع إنشاء المستويات المفقودة في الطريق.
a إذا لم تكن null أو false، وإلا b (قيمة افتراضية).
المُدخل مع إزالة مفتاح واحد.
كل مسار في المُدخل كمصفوفة من المفاتيح، من الأعلى إلى الأسفل.
المتغيرات وواجهة سطر الأوامر
يعرّف $name كسلسلة نصية من الصدفة، قابلة للاستخدام داخل الفلتر.
يعرّف $name من JSON خام، للأرقام والقيم المنطقية والمصفوفات أو الكائنات.
يعرّف $name كمحتوى ملف JSON كاملًا.
يطبع نتائج السلاسل النصية خامًا، دون علامات اقتباس أو تخطيات.
يطبع كل نتيجة مضغوطةً في سطر واحد، دون إزاحة.
يشغّل الفلتر مرة واحدة على null، لبناء المخرجات من لا شيء.
يقرأ كل المُدخل في مصفوفة واحدة قبل تشغيل الفلتر.
يضبط رمز الخروج من آخر مخرجات، لتتمكن سكربتات الصدفة من اختبار النتيجة.
قيمة متغير بيئة، تُقرأ داخل الفلتر.