Skip to content

สูตร jq อธิบาย

ฟิลเตอร์ jq ที่ใช้ในงานประจำวัน จัดกลุ่มตามหน้าที่: การเข้าถึงค่า, การกรองและเลือก, การจัดการคอลเลกชัน, การแปลงค่าและสตริง, การปรับรูปร่างเป็นออบเจกต์หรืออาร์เรย์ใหม่, การอัปเดตเส้นทางแบบแทนที่, การแตกเงื่อนไขตามตรรกะ และการทำ reduce ขั้นสูง พร้อมแฟล็กบรรทัดคำสั่งที่กำหนดรูปแบบอินพุตและเอาต์พุต แต่ละแถวจับคู่ฟิลเตอร์กับผลลัพธ์ที่มันสร้างขึ้น

jq คือฟิลเตอร์: อ่าน JSON จาก stdin, รันไปป์ไลน์ของนิพจน์ที่คั่นด้วยเครื่องหมายไปป์ แล้วเขียน JSON ออกทาง stdout จุด (.) คือค่าปัจจุบัน ทุกอย่างสร้างบนจุดนี้ วิธีเรียนรู้ที่เร็วที่สุดคือส่งข้อมูลจริงผ่านสูตรด้านล่างแล้วดูผลลัพธ์ รันในรูปแบบ jq 'filter' file.json หรือ curl ... | jq 'filter'

ตารางอ้างอิง · 65 รายการ
65 of 65 rows
การเข้าถึง
อินพุตทั้งหมด พิมพ์แบบจัดรูปแบบให้อ่านง่าย
ค่าที่คีย์ระบุ หรือคีย์ที่ซ้อนกัน
ค่าของคีย์ที่ชื่อมีอักขระพิเศษ
อิลิเมนต์แรกของอาร์เรย์ (ค่าลบนับจากท้าย)
แต่ละอิลิเมนต์ของอาร์เรย์ หรือแต่ละค่าของออบเจกต์ ออกมาบรรทัดละหนึ่ง
ค่าที่คีย์ระบุ หรือ null โดยไม่เกิดข้อผิดพลาดเมื่อคีย์ไม่มีอยู่
กรองและเลือก
อินพุตเดิมเมื่อ cond เป็นจริง มิฉะนั้นไม่มีผลลัพธ์
นำ expr ไปใช้กับทุกอิลิเมนต์ของอาร์เรย์แล้วรวมผลลัพธ์ไว้
ชื่อคีย์ที่เรียงแล้ว หรือค่าทั้งหมด ของออบเจกต์ในรูปแบบอาร์เรย์
ความยาวของอาร์เรย์หรือสตริง หรือจำนวนคีย์ในออบเจกต์
เฉพาะอิลิเมนต์ที่ age มากกว่า 18 รวมเป็นอาร์เรย์เดียว
คอลเลกชัน
เป็นจริงเมื่อมีอย่างน้อยหนึ่งอิลิเมนต์ หรือเมื่อทุกอิลิเมนต์ เป็น truthy หรือผ่านฟิลเตอร์
เป็นจริงเมื่อคีย์ k มีอยู่ในออบเจกต์; in รันการทดสอบเดียวกันจากฝั่งคีย์
อิลิเมนต์แรก, อิลิเมนต์สุดท้าย หรือเฉพาะ n ผลลัพธ์แรกของ f
ค่าน้อยที่สุด หรือมากที่สุด ในอาร์เรย์
ตัวเลขตั้งแต่ 0 จนถึง n ออกมาทีละค่า
อาร์เรย์ที่ซ้อนกันถูกยุบเป็นอาร์เรย์แบนเดียว
เป็นจริงเมื่อ x ปรากฏอยู่ที่ใดที่หนึ่งในอินพุต; inside กลับบทบาท
นำ f ไปใช้กับทุกค่าจากล่างขึ้นบน แล้วประกอบอินพุตทั้งหมดกลับใหม่
การแปลง
อาร์เรย์ที่มีเฉพาะฟิลด์ price จากแต่ละอิลิเมนต์
ผลรวมของอาร์เรย์ตัวเลข หรือการรวมของอาร์เรย์ออบเจกต์
แปลงค่าเป็นสตริง หรือแปลงสตริงตัวเลขเป็นตัวเลข
เข้ารหัสอินพุตเป็นสตริง JSON หรือ base64
สตริงที่แปลงเป็นตัวพิมพ์เล็ก
สตริง
สตริงที่มีค่าของ expr แทรกอยู่ในข้อความ
แทนที่ทุกจุดที่เข้ากับแพตเทิร์น หรือเฉพาะจุดแรก ด้วย s
ตัดสตริงเป็นอาร์เรย์ตามตัวคั่น หรือต่ออาร์เรย์เป็นสตริงเดียว
ทดสอบสตริงกับแพตเทิร์น หรือดึงการจับคู่และ named captures ออกมา
ตัดคำนำหน้า หรือคำต่อท้าย ออกเฉพาะเมื่อมีอยู่
จริงหรือเท็จ: สตริงขึ้นต้น หรือลงท้าย ด้วย s
สตริงที่แปลงเป็นตัวพิมพ์ใหญ่
อาร์เรย์ที่เข้ารหัสเป็นแถว CSV, แถว TSV หรืออาร์กิวเมนต์ shell ที่มีเครื่องหมายคำพูด
การปรับรูปร่าง
ออบเจกต์ใหม่ที่มีเฉพาะฟิลด์ id และ name ของอินพุต
อาร์เรย์ของชื่อของทุก item
อาร์เรย์ของออบเจกต์ {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 (ค่าเริ่มต้น)
อินพุตที่ถูกลบคีย์หนึ่งออก
ทุกเส้นทางในอินพุตเป็นอาร์เรย์ของคีย์ จากบนลงล่าง
ตัวแปรและ CLI
กำหนด $name เป็นสตริงจาก shell ที่ใช้ได้ภายในฟิลเตอร์
กำหนด $name จาก JSON ดิบ สำหรับตัวเลข, บูลีน, อาร์เรย์ หรือออบเจกต์
กำหนด $name เป็นเนื้อหาทั้งหมดของไฟล์ JSON
พิมพ์ผลลัพธ์สตริงแบบดิบ ไม่มีเครื่องหมายคำพูดหรือการ escape
พิมพ์แต่ละผลลัพธ์แบบกระชับบรรทัดเดียว ไม่มีการเยื้อง
รันฟิลเตอร์หนึ่งครั้งบน null เพื่อสร้างเอาต์พุตจากความว่างเปล่า
อ่านอินพุตทั้งหมดเข้าอาร์เรย์เดียวก่อนที่ฟิลเตอร์จะรัน
ตั้งรหัส exit จากเอาต์พุตสุดท้าย เพื่อให้สคริปต์ shell ตรวจผลลัพธ์ได้
ค่าของตัวแปรสภาพแวดล้อม ที่อ่านภายในฟิลเตอร์