Τα φίλτρα του jq που χρησιμοποιούνται καθημερινά, ομαδοποιημένα ανά εργασία: πρόσβαση σε μια τιμή, φιλτράρισμα και επιλογή, εργασία με τις συλλογές, μετασχηματισμός τιμών και συμβολοσειρών, αναδιάταξη σε νέο αντικείμενο ή πίνακα, ενημέρωση διαδρομών επιτόπου, διακλάδωση με λογική και προχωρημένη αναγωγή, μαζί με τις σημαίες γραμμής εντολών που διαμορφώνουν είσοδο και έξοδο. Κάθε γραμμή ζευγαρώνει το φίλτρο με το αποτέλεσμα που παράγει.
Το jq είναι φίλτρο: διαβάζει JSON από το stdin, εκτελεί ένα pipeline εκφράσεων χωρισμένων με κάθετους και γράφει JSON στο stdout. Η τελεία είναι η τρέχουσα τιμή· όλα χτίζονται πάνω της. Ο πιο γρήγορος τρόπος εκμάθησης είναι να περάσετε πραγματικά δεδομένα μέσα από τις συνταγές παρακάτω και να παρατηρήσετε την έξοδο. Τρέξτε τις ως jq 'φίλτρο' αρχείο.json ή curl ... | jq 'φίλτρο'.
Πίνακας αναφοράς · 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 ή ως ορίσματα 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 (μια προεπιλεγμένη τιμή).
Η είσοδος με ένα κλειδί αφαιρεμένο.
Κάθε διαδρομή στην είσοδο ως πίνακας κλειδιών, από πάνω προς τα κάτω.
Μεταβλητές και CLI
Ορίζει το $name ως συμβολοσειρά του shell, χρησιμοποιήσιμο μέσα στο φίλτρο.
Ορίζει το $name από ακατέργαστο JSON, για αριθμούς, τιμές boolean, πίνακες ή αντικείμενα.
Ορίζει το $name ως όλο το περιεχόμενο ενός αρχείου JSON.
Εκτυπώνει τα αποτελέσματα τύπου συμβολοσειράς ως έχουν, χωρίς εισαγωγικά ή escapes.
Εκτυπώνει κάθε αποτέλεσμα συμπαγώς σε μία γραμμή, χωρίς εσοχές.
Εκτελεί το φίλτρο μία φορά πάνω σε null, για να χτίσει έξοδο από το μηδέν.
Διαβάζει όλη την είσοδο σε έναν πίνακα πριν τρέξει το φίλτρο.
Ορίζει τον κωδικό εξόδου από την τελευταία έξοδο, ώστε τα shell scripts να μπορούν να ελέγχουν το αποτέλεσμα.
Η τιμή μιας μεταβλητής περιβάλλοντος, διαβασμένη μέσα στο φίλτρο.