فیلترهای jq که روزانه به کار میروند، گروهبندیشده بر اساس کار: دسترسی به یک مقدار، پالودن و گزینش، کار با مجموعهها، تبدیل مقادیر و رشتهها، شکلدهی دوباره به شیء یا آرایهای تازه، بهروزرسانی مسیرها درجا، انشعاب بر پایه منطق، و کاهش پیشرفته، بههمراه پرچمهای خط فرمان که ورودی و خروجی را شکل میدهند. هر سطر، فیلتر را با نتیجهای که تولید میکند جفت میکند.
jq یک فیلتر است: JSON را از stdin میخواند، خط لولهای از عبارتها که با pipe از هم جدا شدهاند را اجرا میکند و JSON را به stdout مینویسد. نقطه، مقدار فعلی است؛ همهچیز بر آن بنا میشود. سریعترین راه یادگیری، فرستادن داده واقعی از دستورهای زیر و دیدن خروجی است. آنها را به شکل jq 'filter' file.json یا curl ... | jq 'filter' اجرا کنید.
جدول مرجع · 65 مورد
دستورهای jqExplained
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، یا آرگومانهای نقلقولی شل.
شکلدهی دوباره
شیء تازهای که فقط فیلدهای id و name ورودی را دارد.
آرایهای از نام هر عنصر.
آرایهای از اشیاء {key, value} ساختهشده از یک شیء.
شیئی ساختهشده از آرایهای از اشیاء {key, value}.
عناصر گروهبندیشده به زیرآرایهها بر پایه فیلد cat.
مرتبسازی بر پایه یک فیلد، یا نگهداشتن یک عنصر برای هر id متمایز.
بهروزرسانی و مسیرها
بهروزرسانی مقدار کلید با اجرای f روی آن.
بازنویسی مقدار کلید با v.
افزودن n به مقدار count، درجا.
خواندن، نوشتن، یا حذف مقادیر در مسیرهایی که بهصورت آرایه داده شدهاند.
کنترل و منطق
a وقتی c درست است، در غیر این صورت b، با elif برای شاخههای بیشتر.
اجرای f، و در صورت شکست f، اجرای g با پیام خطا به جای آن.
توقف با خطایی که msg را حمل میکند، مگر اینکه try آن را بگیرد.
هیچ خروجی؛ آن شاخه ساده از نتایج ناپدید میشود.
ترکیب مقادیر درست و نادرست، یا معکوسکردن یکی.
پیشرفته
تا کردن کل آرایه به یک جمع جاری.
مانند reduce، اما وضعیت را بعد از هر گام بیرون میدهد، نه فقط آخرین گام.
ورودی بعدی، یا همه ورودیهای باقیمانده، که در میانه فیلتر کشیده میشوند.
مقدار بهصورت متن JSON، یا متن JSON که دوباره به مقدار تجزیه شده است.
متن base64 که به رشته اصلی رمزگشایی شده است.
انتساب در عمق ساختار، که سطوح مفقود را در مسیر میسازد.
a اگر null یا نادرست نباشد، در غیر این صورت b (مقدار پیشفرض).
ورودی با حذف یک کلید.
هر مسیر در ورودی بهصورت آرایهای از کلیدها، از بالا به پایین.
متغیرها و خط فرمان
تعریف $name بهعنوان رشته شل، قابل استفاده درون فیلتر.
تعریف $name از JSON خام، برای اعداد، بولیها، آرایهها یا اشیاء.
تعریف $name بهعنوان کل محتوای یک فایل JSON.
چاپ خام نتایج رشتهای، بدون نقلقول یا گریز.
چاپ فشرده هر نتیجه در یک خط، بدون تورفتگی.
اجرای فیلتر یکبار روی null، برای ساختن خروجی از هیچ.
خواندن همه ورودی به یک آرایه پیش از اجرای فیلتر.
تعیین کد خروج از آخرین خروجی، تا اسکریپتهای شل نتیجه را بیازمایند.