คำถามติดแท็ก jq

6
การใช้ jq เพื่อแยกค่าและรูปแบบใน CSV
ฉันมีไฟล์ JSON ด้านล่าง: { "data": [ { "displayName": "First Name", "rank": 1, "value": "VALUE" }, { "displayName": "Last Name", "rank": 2, "value": "VALUE" }, { "displayName": "Position", "rank": 3, "value": "VALUE" }, { "displayName": "Company Name", "rank": 4, "value": "VALUE" }, { "displayName": "Country", "rank": 5, "value": "VALUE" }, ] …
57 bash  python  csv  json  jq 

1
วิธีการพิมพ์ json โดยใช้ jq standalone
ปัจจุบันเมื่อฉันต้องการพิมพ์ไฟล์ json โดยใช้jqฉันจะใช้: cat file.json | grep jq . แต่ฉันคาดว่าjqจะยอมรับชื่อไฟล์เป็นอาร์กิวเมนต์โดยไม่ต้องย้อนcatกลับ หน้าคนพูดว่า: jq [options ... ] ตัวกรอง [ไฟล์ ... ] ... โดยค่าเริ่มต้น jq อ่านกระแสของวัตถุ JSON (คั่นช่องว่าง) จาก stdin อาจระบุหนึ่งไฟล์ขึ้นไปซึ่งในกรณีนี้ jq จะอ่านอินพุตจากไฟล์เหล่านั้นแทน ยังทำงานอยู่: jq file.json ล้มเหลวโดยการทิ้งข้อผิดพลาดการคอมไพล์ที่ไม่ได้กำหนดคีย์ ฉันควรจะเพิ่มไฟล์เมื่อทำงานjqอย่างไร

2
วิธีการแปลงสตริง json แบบฝัง (ที่ยกมา) เป็น json
ฉันคุ้นเคยกับ "jq" สำหรับการแยกวิเคราะห์ json ฉันทำงานกับหนึ่งบริการที่สร้างการตอบสนอง json โดยที่คุณสมบัติอย่างใดอย่างหนึ่งคือสตริง json ฉันจะแปลงค่าที่ยกมาเป็นสตริง json ที่ถูกต้องเพื่อให้ฉันสามารถประมวลผลด้วย jq ได้อย่างไร ตัวอย่างเช่นหากฉันเพิ่งดู json ที่พิมพ์สวยแบบธรรมดาจาก "jq." นี่เป็นข้อความที่ตัดตอนมาสั้น ๆ ของผลลัพธ์: "someJsonString": "{\"date\":\"2018-01-08\", ... ฉันสามารถใช้ jq เพื่อรับค่าของคุณสมบัตินั้น แต่ฉันต้องแปลงสตริงที่ยกมาเพื่อ json ที่ถูกต้องโดย "unescaping" มัน ฉันคิดว่าฉันสามารถแปะไปที่ sed ลบการเปิดและสิ้นสุดเครื่องหมายคำพูดคู่และลบเครื่องหมายแบ็กสแลชทั้งหมด (" sed -e 's/^"//' -e 's/"$//' -e 's/\\//g'") ดูเหมือนว่าจะใช้งานได้ แต่ไม่ได้ดูเหมือนโซลูชันที่แข็งแกร่งที่สุด อัปเดต : เพื่อให้ชัดเจนขึ้นเกี่ยวกับสิ่งที่ฉันทำนี่เป็นตัวอย่างสองสามตัวอย่างที่แสดงสิ่งที่ฉันได้ลอง: % curl -s …
22 json  jq 

4
อาร์เรย์ JSON เพื่อทุบตีตัวแปรโดยใช้ jq
ฉันมีอาร์เรย์ JSON เช่นนั้น: { "SITE_DATA": { "URL": "example.com", "AUTHOR": "John Doe", "CREATED": "10/22/2017" } } ฉันต้องการวนซ้ำอาร์เรย์นี้โดยใช้ jq ดังนั้นฉันสามารถตั้งค่าคีย์ของแต่ละรายการเป็นชื่อตัวแปรและค่าตามที่เป็นค่า ตัวอย่าง: URL = "example.com" AUTHOR = "John Doe" CREATED = "2017/10/22" สิ่งที่ฉันได้ทำซ้ำไปเรื่อย ๆ จนถึงอาร์เรย์ แต่สร้างสตริง: constants=$(cat ${1} | jq '.SITE_DATA' | jq -r "to_entries|map(\"\(.key)=\(.value|tostring)\")|.[]") ผลลัพธ์ใด: URL=example.com AUTHOR=John Doe CREATED=10/22/2017 ฉันต้องการใช้ตัวแปรเหล่านี้เพิ่มเติมในสคริปต์: echo ${URL} …
19 bash  jq 

3
การตั้งค่าเอาต์พุต jq เป็น Bash Variable
ฉันใช้ curl เพื่อให้ JSON กลับมาจาก api ที่เหลือเช่นนี้ content=$(curl -s -X GET -H "Header:Value" http://127.0.0.1:8200/etc) echo "${content}"| jq -r '.data.value' ซึ่งสร้างคุณค่าที่ฉันต้องการ อย่างไรก็ตาม; เมื่อฉันเปลี่ยนโค้ดด้านบนให้มีลักษณะดังนี้: content=$(curl -s -X GET -H "Header:Value" http://127.0.0.1:8200/etc) username=$(echo "${content}"| jq -r '.data.value') echo $username ไม่ได้ผลิตอะไรเลย ฉันจะเปลี่ยนสิ่งนี้ได้อย่างไรเพื่อให้ตัวแปรชื่อผู้ใช้ได้รับการกำหนดผลลัพธ์
18 bash  curl  json  jq 

2
คีย์การพิมพ์ jq และค่าสำหรับทั้งหมดในวัตถุย่อย
ฉันพบQ / A นี้พร้อมวิธีแก้ปัญหาเพื่อพิมพ์คีย์ทั้งหมดในวัตถุ: jq -r 'keys[] as $k | "\($k), \(.[$k] | .ip)"' ในกรณีของฉันฉันต้องการดำเนินการข้างต้น แต่ในวัตถุย่อย: jq -r '.connections keys[] as $k | "\($k), \(.[$k] | .ip)"' ไวยากรณ์ที่เหมาะสมในการทำเช่นนี้คืออะไร?
13 json  jq 

2
การใช้ jq ภายใน chain pipe จะไม่สร้างเอาต์พุต
ปัญหาของการjqต้องการตัวกรองที่ชัดเจนเมื่อมีการกล่าวถึงผลลัพธ์ของการเปลี่ยนเส้นทางไปทั่วเว็บ แต่ฉันไม่สามารถเปลี่ยนเส้นทางผลลัพธ์หากjqเป็นส่วนหนึ่งของไพพ์เชนแม้ว่าจะใช้ตัวกรองอย่างชัดเจนก็ตาม พิจารณา: touch in.txt tail -f in.txt | jq '.f1' # in a different terminal: echo '{"f1":1,"f2":2}' >> in.txt echo '{"f1":3,"f2":2}' >> in.txt ตามที่คาดไว้เอาต์พุตในเทอร์มินัลดั้งเดิมจากjqคำสั่งคือ: 1 3 แต่ถ้าฉันเพิ่มการเปลี่ยนเส้นทางหรือการวางท่อใด ๆ ที่ส่วนท้ายของjqคำสั่งเอาต์พุตจะเงียบ rm in.txt touch in.txt tail -f in.txt | jq '.f1' | tee out.txt # in a different terminal: echo '{"f1":1,"f2":2}' …

4
ล้อมตัวเลขทั้งหมดใน JSON ด้วยเครื่องหมายคำพูด
มีข้อมูล JSON ซึ่งมีค่าตัวเลขบางค่า จะแปลงตัวเลขทั้งหมดเป็นสตริงได้อย่างไร? (ห่อด้วยคำพูด) ตัวอย่าง: { "id":1, "customer":"user", "plate":"BMT-216-A", "country":"GB", "amount":1000, "pndNumber":20000, "zoneNumber":4 } ควรกลายเป็น { "id":"1", "customer":"user", "plate":"BMT-216-A", "country":"GB", "amount":"1000", "pndNumber":"20000", "zoneNumber":"4" }
11 shell  json  jq 

5
awk / sed / perl one liner + วิธีพิมพ์เฉพาะบรรทัดคุณสมบัติจากไฟล์ json
วิธีพิมพ์เฉพาะคุณสมบัติบรรทัดจากไฟล์ json ตัวอย่างของไฟล์ json { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "items" : [ { "href" : "http://master02:8080/api/v1/clusters/HDP/configurations?type=kafka-env&tag=version1527250007610", "tag" : "version1527250007610", "type" : "kafka-env", "version" : 8, "Config" : { "cluster_name" : "HDP", "stack_id" : "HDP-2.6" }, "properties" : { "content" : "\n#!/bin/bash\n\n# Set KAFKA specific environment variables here.\n\n# The java implementation to …
10 awk  sed  perl  json  jq 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.