Awk: Εκμάθηση της δέσμης ενεργειών Shell χρησιμοποιώντας την εντολή Terminal awk

Awk: Εκμάθηση της δέσμης ενεργειών Shell χρησιμοποιώντας την εντολή Terminal awk

Awk: Εκμάθηση της δέσμης ενεργειών Shell χρησιμοποιώντας την εντολή Terminal awk

Η εντολή "awk" στα Ελεύθερα Λειτουργικά Συστήματα τύπου GNU / Linux είναι μια πολύ ισχυρή εντολή, η οποία μας βοηθά να έχουμε μεγαλύτερο έλεγχο κατά την επεξεργασία δεδομένων από άλλες εντολές ή εντολές. Το όνομα AWK προέρχεται από τα αρχικά των επωνύμων των συγγραφέων του: Alfred AΧο, Πέτερ Weinberger και Brian KΈρνιγκαν.

Αυτή η εντολή παρέχει μια γλώσσα δέσμης ενεργειών για την επεξεργασία κειμένου με την οποία μπορούμε: Καθορισμός μεταβλητών, χρήση συμβολοσειρών και αριθμητικών τελεστών, χρήση ελέγχου ροής και κύκλων και δημιουργία μορφοποιημένων αναφορών. Στην πραγματικότητα, το Awk είναι κάτι περισσότερο από μια εντολή επεξεργασίας προτύπων, είναι μια ολόκληρη γλώσσα σημασιολογικής ανάλυσης.

Εισαγωγή στην εντολή "awk"

Το AWK ήταν ένα από τα πρώτα πολύ δημοφιλή βοηθητικά προγράμματα κονσόλας για τη διαχείριση (χειρισμός / εξαγωγή) δεδομένων μεγιστοποιώντας τη λειτουργικότητα των αγωγών UNIX. Η γλώσσα που παρέχεται από αυτό το βοηθητικό πρόγραμμα είναι επί του παρόντος ένα πρότυπο σε σχεδόν όλα τα σύγχρονα λειτουργικά συστήματα τύπου UNIX, τόσο πολύ που αποτελεί μέρος των βασικών προδιαγραφών UNIX, επομένως συνήθως είναι ήδη εγκατεστημένο στα περισσότερα από αυτά από προεπιλογή.

Η πιο κοινή σύνταξή του είναι: awk «πρόγραμμα» αρχεία και πού μπορεί να είναι το «πρόγραμμα»: pattern {action} pattern {action}. Η εντολή διαβάζει την εισαγωγή αρχείου μία γραμμή κάθε φορά. Κάθε σειρά συγκρίνεται με κάθε μοτίβο με τη σειρά. για κάθε μοτίβο που ταιριάζει με τη σειρά, εκτελείται η αντίστοιχη ενέργεια.

Ένα απλό παράδειγμα όπως:

awk -F: '$1=="root" {print}' /etc/passwd

ζητάει το πρώτο πεδίο εάν είναι root κάθε γραμμής στο / etc / passwd και το εκτυπώνει λαμβάνοντας υπόψη το ":" με το -F: ως διαχωριστικό πεδίου.

Εισαγωγικό Παράδειγμα Awk

Πρακτικά παραδείγματα

Λίστα εντολών που χρησιμοποιούνται περισσότερο

Προβάλετε μια λίστα με βάση το ιστορικό του τερματικού συστήματος που έχει ταξινομηθεί από τα πιο συχνά χρησιμοποιούμενα στο λιγότερο.

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

Παράδειγμα:

Παράδειγμα 1: Εντολή Awk

Γράφημα (Πίνακας) με αριθμό συνδέσεων για κάθε κεντρικό υπολογιστή

Δημιουργήστε ένα γράφημα βάσει κειμένου ASCII που δείχνει τον συνολικό αριθμό συνδέσεων από τον κεντρικό υπολογιστή σε κάθε διεύθυνση IP.

netstat -an | grep ESTABLISHED | awk '{print $5}' | awk -F: '{print $1}' | sort | uniq -c | awk '{ printf("%s\t%s\t",$2,$1) ; for (i = 0; i < $1; i++) {printf("*")}; print "" }'

Παράδειγμα:

Παράδειγμα 2: Εντολή Awk

Κατάλογος καταλόγων κατά μέγεθος

Εκτυπώστε στην οθόνη τη λίστα των καταλόγων της τρέχουσας διαδρομής από τη μεγαλύτερη έως τη μικρότερη που δείχνει τις ετικέτες που αντιστοιχούν στο μέγεθός τους χρησιμοποιώντας τα γράμματα: g, m και k.

du --max-depth=1 | sort -r -n | awk '{split("k m g",v); s=1; while($1>1024){$1/=1024; s++} print int($1)" "v[s]"\t"$2}'

Παράδειγμα:

Παράδειγμα 3: Εντολή Awk

Εμφάνιση επισκεψιμότητας από μια διασύνδεση δικτύου

Προβάλετε την κατανάλωση εισερχόμενων και εξερχόμενων δεδομένων στο διαδίκτυο σε kilobyte (kb) για μια συγκεκριμένη διεπαφή δικτύου.

while [ /bin/true ]; do OLD=$NEW; NEW=`cat /proc/net/dev | grep eth0 | tr -s ' ' | cut -d' ' -f "3 11"`; echo $NEW $OLD | awk '{printf("\rin: % 9.2g\t\tout: % 9.2g", ($1-$3)/1024, ($2-$4)/1024)}'; sleep 1; done

Παράδειγμα:

Αποκτήστε μια σειρά αριθμών fibonacci

Δημιουργήστε μια λίστα με αριθμούς ποσότητας Χ ακολουθώντας ένα μοτίβο fibonacci, δίνοντας 2 βασικούς αριθμούς που θα κατασκευαστούν.

seq 50| awk 'BEGIN {a=1; b=1} {print a; c=a+b; a=b; b=c}'

Παράδειγμα:

Παράδειγμα 5: Εντολή Awk

Γραφική λίστα της δομής αρχείων κατά μέγεθος

Λάβετε μια λίστα με όλους τους φακέλους στη ρίζα του λειτουργικού συστήματος μαζί με το γραφικό (γραμμές) και την αριθμητική αναπαράσταση ως ποσοστό του μεγέθους τους μέσα σε αυτό.

t=$(df|awk 'NR!=1{sum+=$2}END{print sum}');sudo du / --max-depth=1|sed '$d'|sort -rn -k1 | awk -v t=$t 'OFMT="%d" {M=64; for (a=0;a<$1;a++){if (a>c){c=a}}br=a/c;b=M*br;for(x=0;x<b;x++){printf "\033[1;31m" "|" "\033[0m"}print " "$2" "(a/t*100)"% total"}'

Παράδειγμα:

Παράδειγμα 6: Εντολή Awk

Καταχωρίστε μια σύνοψη των τύπων αρχείων σε έναν κατάλογο

Εμφάνιση λίστας των τύπων αρχείων που περιέχονται σε έναν κατάλογο μαζί με τον αριθμό των αρχείων που αντιστοιχούν σε αυτόν.

find . -type f | awk -F'.' '{print $NF}' | sort| uniq -c | sort -g

Παράδειγμα:

Παράδειγμα 8: Εντολή Awk

Αυτά τα παραδείγματα γραμμών εντολών που χρησιμοποιούν την εντολή awk ελπίζω να τα βρείτε πολύ χρήσιμα. Και χρησιμεύουν για χρήση απευθείας από την κονσόλα ή έμμεσα με την εισαγωγή τους σε ένα σενάριο (αυτοματοποιημένη εργασία).

Στην επόμενη ανάρτηση στο Shell Scripting θα διερευνήσουμε άλλες εντολές.

Αν θέλετε να μάθετε περισσότερα σχετικά με την εντολή "grep", επισκεφτείτε αυτόν τον σύνδεσμο "DEBIAN WikiΚαι αν θέλετε να μάθετε περισσότερα για το Shell Scripting στο δικό μας Blog, μπορείτε να ρίξετε μια ματιά στις άλλες δημοσιεύσεις μας για το θέμα κάνοντας κλικ εδώ: Δημιουργία σεναρίων στο FromLinux