NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
EL

Εντολές 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 με τον σκληρό τρόπο· την εγκατάσταση, την παρακολούθηση και τις εκπλήξεις τις αναλαμβάνουμε εμείς.

Μιλήστε με έναν μηχανικό

Πρόβλημα διακομιστή; Εισβολή στον ιστότοπο; Αργός ιστότοπος;

Απάντηση σε κρίσιμα ζητήματα εντός 30 λεπτών — 24 ώρες την ημέρα, 7 ημέρες την εβδομάδα.

Ζήτηστε επείγουσα υποστήριξη support@kinetikatech.com