Εντολές Linux
awk: Όταν οι στήλες γίνονται προγράμματα
Το awk είναι αυτό που προσεγγίζετε όταν οι στήλες γίνονται η μονάδα εργασίας: αρχεία καταγραφής πρόσβασης nginx, /etc/passwd, έξοδος df, οτιδήποτε ζει σε πεδία. Είναι μια πλήρης γλώσσα (μεταβλητές, πίνακες, αριθμητική, κανόνες μοτίβων-ενέργειας) που φοράει ρούχα μιας γραμμής, που είναι ακριβώς η σωστή μεταμφίεση για την εγκληματολογία των κορμών. Το ειλικρινές όριο: ό,τι κάνει το awk άνετα είναι μια απλή γραμμή και οτιδήποτε χρειάζεται μια σελίδα με μπλοκ είναι ένα σενάριο Python που δεν έχει παραδεχτεί ακόμη.
Βασικά σημεία
- Ο διαχωρισμός πεδίων είναι το βασικό κόλπο: awk -F: '$3 >= 1000 {print $1}' /etc/passwd παραθέτει τους πραγματικούς χρήστες και το -F'[,|]' χειρίζεται οριοθέτες πολλών χαρακτήρων όταν η αποκοπή έχει ήδη εγκαταλείψει.
- Καταμέτρηση με συσχετιστικούς πίνακες: awk '{count[$1]++} END {for (c in count) count print[c], c}' /var/log/secure μετατρέπει οποιοδήποτε αρχείο καταγραφής σε πίνακα συχνοτήτων σε μία γραμμή.
- Οι NR και NF απαντούν στις ερωτήσεις του αρχείου: Το 'NR==1' είναι η γραμμή κεφαλίδας, το '{print NF}' μετράει στήλες ανά σειρά και η σύγκριση του NR με τις αποθηκευμένες τιμές ενός άλλου αρχείου βρίσκει διπλότυπα και κενά.
- Ταίριασμα συν απόσπασμα είναι το καθημερινό ψωμί: awk '/ 500 / {print $7, $9}' access.log τραβάει σελίδες σφαλμάτων με URL και το OFS σάς επιτρέπει να εκτυπώσετε ξανά $0 μετά την επεξεργασία ενός μόνο πεδίου χωρίς να ξαναγράψετε τη γραμμή μόνοι σας.
- Τα μπλοκ BEGIN και END είναι εκεί όπου ζει το συνολικό έργο: Το BEGIN θέτει διαχωριστικά, οι μεσαίοι κανόνες τρέχουν ανά γραμμή, το END εκτυπώνει σύνολα. τρία τετράγωνα διαβάζονται καλά, πέντε είναι ένα σενάριο που φοράει μια μεταμφίεση.
- Η παράθεση είναι ο πραγματικός εχθρός των γραμμών κελύφους: μονό εισαγωγικό στο πρόγραμμα, διπλά εισαγωγικά κυριολεκτικά μέσα σε αυτό και θυμηθείτε ότι τα 7 $ μέσα σε μια συμβολοσειρά κελύφους με διπλά εισαγωγικά δεν φτάνουν ποτέ καθόλου στο awk.
- Η αριθμητική εργασία λαμβάνει LC_ALL=C: κόμματα τοπικών ρυθμίσεων σε αριθμούς και περιττές συλλογές στρέφουν τις συγκρίσεις και ταξινομούν πλάγια, και το καρφίτσωμα των τοπικών ρυθμίσεων είναι μια γραμμή που αποθηκεύει ένα απόγευμα.
- Γνωρίστε το ανώτατο όριο: τα εισαγωγικά κόμματα μέσα σε CSV, ένθετες μορφές JSON ή καταστάσεις πολλαπλών γραμμών πηγαίνουν στην Python. Το awk είναι νυστέρι και μένει ένα.
Σημείωση από το πεδίο
Ένα awk one-liner που άθροιζε στήλες δολαρίων από ένα αρχείο καταγραφής με κόμματα τοπικών ρυθμίσεων παρήγαγε αριθμούς που κανείς δεν αμφισβήτησε έως ότου η λογιστική άνοιξε την αναφορά. LC_ALL=C μετακόμισε στη βιβλιοθήκη ψευδώνυμών μας εκείνη την εβδομάδα και παρέμεινε.
Συχνές ερωτήσεις
awk ή κομμένο για κολώνες;
Αποκοπή για ένα σταθερό διαχωριστικό και μια απλή λίστα στηλών. awk τη στιγμή που εμφανίζονται οι συνθήκες, το regex, η αριθμητική ή τα συγκεντρωτικά στοιχεία, οπότε η αποκοπή είναι ούτως ή άλλως εκτός βάθους.
Πώς μπορώ να αθροίσω ή να κάνω μέσο όρο μιας στήλης;
Συγκεντρωτικό στο ΤΕΛΟΣ: awk '{s += $5} END {print s, s/NR}' προσθέτει και μετράει το πεδίο πέντε στις γραμμές. αφαιρέστε πρώτα τα διαχωριστικά χιλιάδων αν μια τοπική ρύθμιση βάζει κόμματα στους αριθμούς.
Γιατί το awk one-liner μου συμπεριφέρεται διαφορετικά στο macOS;
Το macOS αποστέλλει ένα POSIX awk χωρίς επεκτάσεις GNU όπως -i inplace ή gensub. Τα σενάρια που εκτελούνται σε Linux μπορεί να αποτύχουν αθόρυβα εκεί, επομένως κρατήστε τα one-liners σε σχήμα POSIX ή έχετε μαζί σας gawk.
Μπορεί το awk να αναλύσει το JSON;
Χωρίς νόημα: Το JSON δεν έχει δομή στηλών awk κατανοεί και regex hacks σπάνε σε ένθετα αντικείμενα. Χρησιμοποιήστε το jq, το οποίο είναι το σχήμα του awk για το JSON, ή τη λειτουργική μονάδα json της Python όταν η εργασία μεγαλώνει.
Πώς βοηθάει η Kinetikatech στα εντολές linux
Για να είμαστε ειλικρινείς, οι περισσότερες ομάδες έρχονται σε εμάς αφού δοκιμάσουν μόνες τους: Οι εντολές και οι συνήθειες δέσμης ενεργειών που αποφασίζουν εάν ένας διαχειριστής χειρίζεται έναν διακομιστή ή τον καταπολεμά: αναζήτηση, μετατροπή, μεταφορά και επίβλεψη κειμένου και διεργασιών με τα εργαλεία που υπάρχουν σε κάθε βασική εγκατάσταση. Η υπηρεσία μας Ασφάλεια διακομιστών Linux and Διαχείριση διακομιστών υπάρχει για να μην ανακαλύψετε εντολές linux με τον σκληρό τρόπο· την εγκατάσταση, την παρακολούθηση και τις εκπλήξεις τις αναλαμβάνουμε εμείς.