فهرست مطالب
وقتی API صدها خط JSON فشرده برمیگرداند، پیدا کردن یک فیلد در ترمینال خستهکننده است. ذخیره در فایل و جستوجوی دستی هم کند است. jq برای همین اصطکاک ساخته شده.
jq چه میکند؟
پردازندهٔ خط فرمان برای قالببندی، جستوجو و برش JSON است — شبیه sed/awk، ولی کلید/مقدار، آرایه و نوعهای JSON را میفهمد. با C نوشته شده، وابستگی اجرایی سنگین ندارد و خروجی را خوانا (و اغلب رنگی) میکند.
چه کسانی به آن نیاز دارند؟
بکاند و فرانت که با API کار میکنند، DevOps با خروجی Docker/Kubernetes، و مهندسان داده با لاگهای ساختیافته. حتی اگر در دورهٔ جاوااسکریپت از صفر تا برنامهنویس با آبجکت و آرایه آشنا شده باشید، برای خط فرمان هنوز به ابزاری بدون اسکریپت پایتون/نود نیاز دارید.
نصب
دبیان/اوبونتو:
bashsudo apt-get install jq
macOS (Homebrew):
bashbrew install jq
ویندوز (winget):
powershellwinget install jqlang.jq
اولین دستور
سادهترین فیلتر، نقطه (.) برای مرتبسازی است. نمونه از API گیتهاب:
bashcurl -s https://api.github.com/repos/jqlang/jq | jq '{name: .name, stars: .stargazers_count, license: .license.name}'
خروجی شبیه:
json{
"name": "jq",
"stars": 35590,
"license": "Other"
}
برای رشتهٔ خام بدون گیومه در شل، -r:
bashcurl -s https://api.github.com/repos/jqlang/jq | jq -r .default_branch
چه چیزی عوض میشود؟
قبل از jq، استخراج یک شناسه اغلب با grep/regex نامطمئن یا یکخطی پایتون بود. jq همان کار را داخل پایپلاین شل میکند: فیلتر، نگاشت آرایه، محاسبه، ساخت JSON تازه.
محدودیت واقعی
کل سند را در RAM میخواند؛ برای چند گیگابایت ممکن است حافظه را پر کند — آنجا پردازش جریانی بهتر است. سینتکس پیچیده هم گاهی خوانایی اسکریپت را برای تیم پایین میآورد؛ فیلترها را کوتاه و خوانا نگه دارید.




نظرها
اولین نفری باشید که نظر میدهدسؤالتان را بپرسید یا تجربهتان را بنویسید تا نویسندهی مطلب پاسخ بدهد.