20 παράξενα παραδείγματα

20 Awk Examples



Υπάρχουν πολλά βοηθητικά εργαλεία στο λειτουργικό σύστημα Linux για αναζήτηση και δημιουργία αναφοράς από δεδομένα κειμένου ή αρχείο. Ο χρήστης μπορεί εύκολα να εκτελέσει πολλούς τύπους αναζήτησης, αντικαθιστώντας και αναφέροντας εργασίες δημιουργίας χρησιμοποιώντας εντολές awk, grep και sed. Το awk δεν είναι απλώς μια εντολή. Είναι μια γλώσσα δέσμης ενεργειών που μπορεί να χρησιμοποιηθεί τόσο από τερματικό όσο και από αρχείο awk. Υποστηρίζει τη μεταβλητή, δήλωση υπό όρους, πίνακα, βρόχους κ.λπ., όπως άλλες γλώσσες δέσμης ενεργειών. Μπορεί να διαβάσει κάθε περιεχόμενο αρχείου γραμμή προς γραμμή και να διαχωρίσει τα πεδία ή τις στήλες βάσει συγκεκριμένου οριοθέτη. Υποστηρίζει επίσης κανονική έκφραση για αναζήτηση συγκεκριμένης συμβολοσειράς στο περιεχόμενο ή το αρχείο κειμένου και πραγματοποιεί ενέργειες εάν βρεθεί αντιστοιχία. Ο τρόπος με τον οποίο μπορείτε να χρησιμοποιήσετε την εντολή και το σενάριο awk φαίνεται σε αυτό το σεμινάριο χρησιμοποιώντας 20 χρήσιμα παραδείγματα.

Περιεχόμενα:

  1. awk με printf
  2. awk για να χωριστεί σε λευκό χώρο
  3. awk για αλλαγή του οριοθέτη
  4. awk με δεδομένα οριοθετημένα με καρτέλες
  5. awk με δεδομένα csv
  6. awk regex
  7. awk υπόθεση αδιάκριτο regex
  8. awk με μεταβλητή nf (αριθμός πεδίων)
  9. awk gensub () συνάρτηση
  10. awk με συνάρτηση rand ()
  11. awk συνάρτηση που ορίζεται από το χρήστη
  12. awk αν
  13. μεταβλητές awk
  14. awk συστοιχίες
  15. awk loop
  16. awk για εκτύπωση της πρώτης στήλης
  17. awk για εκτύπωση της τελευταίας στήλης
  18. awk με grep
  19. awk με το αρχείο δέσμης ενεργειών bash
  20. awk με sed

Χρήση awk με printf

printf () Η λειτουργία χρησιμοποιείται για τη μορφοποίηση οποιασδήποτε εξόδου στις περισσότερες γλώσσες προγραμματισμού. Αυτή η λειτουργία μπορεί να χρησιμοποιηθεί με awk εντολή για τη δημιουργία διαφορετικών τύπων μορφοποιημένων εξόδων. εντολή awk που χρησιμοποιείται κυρίως για οποιοδήποτε αρχείο κειμένου. Δημιουργήστε ένα αρχείο κειμένου με όνομα υπάλληλος.txt με το περιεχόμενο που δίνεται παρακάτω όπου χωρίζονται τα πεδία με καρτέλα (‘ t’).







υπάλληλος.txt



1001 John sena 40000
1002 Jafar Iqbal 60000
1003 Meher Nigar 30000
1004 Jonny Liver 70000

Η ακόλουθη εντολή awk θα διαβάσει δεδομένα από υπάλληλος.txt αρχείο γραμμή προς γραμμή και εκτύπωση του πρώτου αρχείου μετά τη μορφοποίηση. Εδώ, %10s n σημαίνει ότι η έξοδος θα έχει μήκος 10 χαρακτήρων. Εάν η τιμή της εξόδου είναι μικρότερη από 10 χαρακτήρες, τότε τα κενά θα προστεθούν στο μπροστινό μέρος της τιμής.



$ awk'{printf'%10s n', $ 1}'υπάλληλος.κείμενο

Παραγωγή:





Μετάβαση στο Περιεχόμενο



awk για να χωριστεί σε λευκό χώρο

Ο προεπιλεγμένος διαχωριστής λέξεων ή πεδίων για τη διάσπαση οποιουδήποτε κειμένου είναι κενός χώρος. Η εντολή awk μπορεί να λάβει την τιμή κειμένου ως είσοδο με διάφορους τρόπους. Το κείμενο εισαγωγής περνά από πέταξε έξω εντολή στο ακόλουθο παράδειγμα. Το κείμενο, ' Μου αρέσει ο προγραμματισμός Θα χωριστεί από τον προεπιλεγμένο διαχωριστή, χώρος , και η τρίτη λέξη θα εκτυπωθεί ως έξοδος.

$πέταξε έξω «Μου αρέσει ο προγραμματισμός» | awk '{print $ 3}'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk για αλλαγή του οριοθέτη

Η εντολή awk μπορεί να χρησιμοποιηθεί για την αλλαγή του οριοθέτη για οποιοδήποτε περιεχόμενο αρχείου. Ας υποθέσουμε ότι έχετε ένα αρχείο κειμένου με όνομα phone.txt με το ακόλουθο περιεχόμενο όπου το ‘:’ χρησιμοποιείται ως διαχωριστής πεδίου του περιεχομένου του αρχείου.

phone.txt

+123: 334: 889: 778
+880: 1855: 456: 907
+9: 7777: 38644: 808

Εκτελέστε την ακόλουθη εντολή awk για να αλλάξετε τον οριοθέτη, ':' με ‘-’ στο περιεχόμενο του αρχείου, phone.txt Το

$ cat phone.txt
$ awk '$ 1 = $ 1' FS = ':' OFS = '-' phone.txt

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με δεδομένα οριοθετημένα με καρτέλες

Η εντολή awk έχει πολλές ενσωματωμένες μεταβλητές που χρησιμοποιούνται για την ανάγνωση του κειμένου με διαφορετικούς τρόπους. Δύο από αυτά είναι FS και OFS Το FS είναι διαχωριστικό πεδίου εισόδου και OFS είναι μεταβλητές διαχωριστικού πεδίου εξόδου. Οι χρήσεις αυτών των μεταβλητών εμφανίζονται σε αυτήν την ενότητα. Δημιουργώ ένα αυτί διαχωρισμένο αρχείο με όνομα input.txt με το ακόλουθο περιεχόμενο για να δοκιμάσετε τις χρήσεις του FS και OFS μεταβλητές.

Input.txt

Γλώσσα δέσμης ενεργειών από την πλευρά του πελάτη
Γλώσσα δέσμης ενεργειών από την πλευρά του διακομιστή
Διακομιστής βάσης δεδομένων
Διακομιστής Ιστού

Χρήση μεταβλητής FS με καρτέλα

Η ακόλουθη εντολή θα χωρίσει κάθε γραμμή input.txt αρχείο με βάση την καρτέλα (‘ t’) και εκτυπώστε το πρώτο πεδίο κάθε γραμμής.

$awk '{print $ 1}' FS=' t'input.txt

Παραγωγή:

Χρήση μεταβλητής OFS με καρτέλα

Η ακόλουθη εντολή awk θα εκτυπώσει το 9ου και 5ου πεδία των 'Ls -l' έξοδος εντολών με διαχωριστή καρτέλας μετά την εκτύπωση του τίτλου στήλης Ονομα και Μέγεθος Το Εδώ, OFS η μεταβλητή χρησιμοποιείται για τη μορφοποίηση της εξόδου από μια καρτέλα.

$ls -ο
$ls -ο | awk OFS=' t' 'BEGIN {printf'%s t%s n ',' Name ',' Size '} {print $ 9, $ 5}'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με δεδομένα CSV

Το περιεχόμενο οποιουδήποτε αρχείου CSV μπορεί να αναλυθεί με πολλούς τρόπους χρησιμοποιώντας την εντολή awk. Δημιουργήστε ένα αρχείο CSV με όνομα « client.csv »Με το ακόλουθο περιεχόμενο για την εφαρμογή της εντολής awk.

client.txt

Αναγνωριστικό, Όνομα, email, τηλέφωνο
1, Σοφία, [email protected], (862) 478-7263
2, Amelia, [email protected], (530) 764-8000
3, Emma, ​​[email protected], (542) 986-2390

Ανάγνωση μεμονωμένου πεδίου αρχείου CSV

'-ΦΑ' Η επιλογή χρησιμοποιείται με την εντολή awk για να ορίσετε τον οριοθέτη για το διαχωρισμό κάθε γραμμής του αρχείου. Η ακόλουθη εντολή awk θα εκτυπώσει το όνομα πεδίο του ο πελάτης.csv αρχείο.

$Γάταclient.csv
$awk -ΦΑ ',' '{print $ 2}'client.csv

Παραγωγή:

Ανάγνωση πολλών πεδίων με συνδυασμό με άλλο κείμενο

Η ακόλουθη εντολή θα εκτυπώσει τρία πεδία του client.csv συνδυάζοντας κείμενο τίτλου, Όνομα, email και τηλέφωνο Το Η πρώτη γραμμή του client.csv το αρχείο περιέχει τον τίτλο κάθε πεδίου. ΟΧΙ η μεταβλητή περιέχει τον αριθμό γραμμής του αρχείου όταν η εντολή awk αναλύει το αρχείο. Σε αυτό το παράδειγμα, το NR μεταβλητή χρησιμοποιείται για να παραλείψει την πρώτη γραμμή του αρχείου. Η έξοδος θα δείξει το 2nd, 3rdκαι 4ουπεδία όλων των γραμμών εκτός από την πρώτη γραμμή.

$awk -ΦΑ ',' 'NR> 1 {print' Όνομα: '$ 2', Email: '$ 3', Τηλέφωνο: '$ 4}'client.csv

Παραγωγή:

Ανάγνωση αρχείου CSV χρησιμοποιώντας ένα σενάριο awk

Το σενάριο awk μπορεί να εκτελεστεί εκτελώντας αρχείο awk. Ο τρόπος με τον οποίο μπορείτε να δημιουργήσετε αρχείο awk και να εκτελέσετε το αρχείο εμφανίζεται σε αυτό το παράδειγμα. Δημιουργήστε ένα αρχείο με όνομα awkcsv.awk με τον ακόλουθο κωδικό. ΝΑ ΑΡΧΙΣΕΙ η λέξη -κλειδί χρησιμοποιείται στο σενάριο για την ενημέρωση της εντολής awk για την εκτέλεση του σεναρίου του ΝΑ ΑΡΧΙΣΕΙ μέρος πρώτα πριν από την εκτέλεση άλλων εργασιών. Εδώ, διαχωριστής πεδίου ( FS ) χρησιμοποιείται για τον ορισμό του διαχωριστικού οριοθέτη και 2ndκαι 1stτα πεδία θα εκτυπωθούν σύμφωνα με τη μορφή που χρησιμοποιείται στη συνάρτηση printf ().

awkcsv.awk
ΝΑ ΑΡΧΙΣΕΙ{FS= ','} { printf '% 5s (% s) n',$2,$1}

Τρέξιμο awkcsv.awk αρχείο με το περιεχόμενο του ο πελάτης.csv αρχείο με την ακόλουθη εντολή.

$awk -φάawkcsv.awk customer.csv

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk regex

Η κανονική έκφραση είναι ένα μοτίβο που χρησιμοποιείται για την αναζήτηση οποιασδήποτε συμβολοσειράς σε ένα κείμενο. Διαφορετικοί τύποι πολύπλοκων εργασιών αναζήτησης και αντικατάστασης μπορούν να γίνουν πολύ εύκολα χρησιμοποιώντας την κανονική έκφραση. Ορισμένες απλές χρήσεις της κανονικής έκφρασης με εντολή awk εμφανίζονται σε αυτήν την ενότητα.

Αντιστοίχιση χαρακτήρασειρά

Η παρακάτω εντολή θα ταιριάξει με τη λέξη Ηλίθιος ή βλάκας ή Δροσερός με τη συμβολοσειρά εισαγωγής και εκτύπωση εάν η λέξη βρεθεί. Εδώ, Κούκλα δεν θα ταιριάζει και δεν θα εκτυπώνεται.

$printf 'Ανόητος nΔροσερός nΚούκλα nμπουλ ' | awk '/[FbC] ool/'

Παραγωγή:

Αναζήτηση συμβολοσειράς στην αρχή της γραμμής

‘^’ το σύμβολο χρησιμοποιείται στην κανονική έκφραση για αναζήτηση οποιουδήποτε μοτίβου στην αρχή της γραμμής. ' Linux ’ η λέξη θα αναζητηθεί στην αρχή κάθε γραμμής του κειμένου στο ακόλουθο παράδειγμα. Εδώ, δύο γραμμές ξεκινούν με το κείμενο, ‘Linux »Και αυτές οι δύο γραμμές θα εμφανιστούν στην έξοδο.

$πέταξε έξω -Και Το Linux είναι δωρεάν στη χρήση nΕίναι λογισμικό ανοιχτού κώδικα nLinuxHint είναι
δημοφιλής ιστότοπος ιστολογίου »
| awk '/^Linux/'

Παραγωγή:

Αναζήτηση συμβολοσειράς στο τέλος της γραμμής

'$' το σύμβολο χρησιμοποιείται στην κανονική έκφραση για αναζήτηση οποιουδήποτε μοτίβου στο τέλος κάθε γραμμής του κειμένου. ' Γραφή Η λέξη αναζητείται στο ακόλουθο παράδειγμα. Εδώ, δύο γραμμές περιέχουν τη λέξη, Γραφή στο τέλος της γραμμής.

$πέταξε έξω -Και 'PHP Script nJavaScript nΟπτικός προγραμματισμός » | awk '/Script $/'

Παραγωγή:

Αναζήτηση με παράλειψη συγκεκριμένου συνόλου χαρακτήρων

‘^’ το σύμβολο υποδεικνύει την έναρξη του κειμένου όταν χρησιμοποιείται μπροστά από οποιοδήποτε μοτίβο συμβολοσειράς (‘ / ^… /’) ή πριν από οποιοδήποτε σύνολο χαρακτήρων που δηλώθηκε από ^ […] Το Αν το ‘^’ το σύμβολο χρησιμοποιείται μέσα στην τρίτη αγκύλη, [^…] τότε ο καθορισμένος χαρακτήρας που ορίζεται μέσα στην αγκύλη θα παραλειφθεί τη στιγμή της αναζήτησης. Η ακόλουθη εντολή θα αναζητήσει οποιαδήποτε λέξη δεν ξεκινά με 'ΦΑ' αλλά τελειώνει με « ool '. Δροσερός και μπουλ θα εκτυπωθεί σύμφωνα με το μοτίβο και τα δεδομένα κειμένου.

$ printf 'Ανόητος nΔροσερός nΚούκλα nμπουλ ' |awk' / [^ F] ool /'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk υπόθεση αδιάκριτο regex

Από προεπιλογή, η κανονική έκφραση πραγματοποιεί αναζήτηση με διάκριση πεζών -κεφαλαίων κατά την αναζήτηση οποιουδήποτε μοτίβου στη συμβολοσειρά. Η αναζήτηση χωρίς διάκριση πεζών -κεφαλαίων μπορεί να γίνει με εντολή awk με την κανονική έκφραση. Στο ακόλουθο παράδειγμα, να μειώσει() η συνάρτηση χρησιμοποιείται για αναζήτηση χωρίς διάκριση πεζών -κεφαλαίων. Εδώ, η πρώτη λέξη κάθε γραμμής του κειμένου εισαγωγής θα μετατραπεί σε πεζά με τη χρήση να μειώσει() λειτουργούν και ταιριάζουν με το πρότυπο κανονικής έκφρασης. τουπερ () συνάρτηση μπορεί επίσης να χρησιμοποιηθεί για το σκοπό αυτό, σε αυτή την περίπτωση, το μοτίβο πρέπει να ορίζεται με όλα τα κεφαλαία γράμματα. Το κείμενο που ορίζεται στο ακόλουθο παράδειγμα περιέχει τη λέξη αναζήτησης, 'Ιστός Σε δύο γραμμές που θα εκτυπωθούν ως έξοδο.

$πέταξε έξω -Και «Σχεδιασμός Ιστού nΑνάπτυξη διαδικτύου nΔομή' | awk 'tolower ($ 0) ~ /^web /;'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με μεταβλητή NF (αριθμός πεδίων)

NF είναι μια ενσωματωμένη μεταβλητή της εντολής awk η οποία χρησιμοποιείται για τον υπολογισμό του συνολικού αριθμού πεδίων σε κάθε γραμμή του κειμένου εισαγωγής. Δημιουργήστε οποιοδήποτε αρχείο κειμένου με πολλές γραμμές και πολλές λέξεις. το input.txt χρησιμοποιείται εδώ το αρχείο που δημιουργήθηκε στο προηγούμενο παράδειγμα.

Χρησιμοποιώντας το NF από τη γραμμή εντολών

Εδώ, η πρώτη εντολή χρησιμοποιείται για την εμφάνιση του περιεχομένου του input.txt αρχείο και η δεύτερη εντολή χρησιμοποιείται για την εμφάνιση του συνολικού αριθμού πεδίων σε κάθε γραμμή του αρχείου χρησιμοποιώντας NF μεταβλητός.

$ cat input.txt
$ awk '{print NF}' input.txt

Παραγωγή:

Χρήση NF σε αρχείο awk

Δημιουργήστε ένα αρχείο awk με όνομα καταμέτρηση.awk με το σενάριο που δίνεται παρακάτω. Όταν αυτό το σενάριο θα εκτελεστεί με οποιαδήποτε δεδομένα κειμένου, κάθε περιεχόμενο γραμμής με συνολικά πεδία θα εκτυπωθεί ως έξοδος.

καταμέτρηση.awk

{εκτύπωση $0}
{Τυπώνω'[Συνολικά πεδία:'NF']'}

Εκτελέστε το σενάριο με την ακόλουθη εντολή.

$awk -φάcount.awk input.txt

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk gensub () συνάρτηση

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

Σύνταξη:

gensub(regexp, αντικατάσταση, πώς[, στόχος])

Εκτελέστε την ακόλουθη εντολή για εγκατάσταση μπούφος πακέτο για χρήση getub () λειτουργία με εντολή awk.

$ sudo apt-get gawk εγκατάστασης

Δημιουργήστε ένα αρχείο κειμένου με όνομα « salesinfo.txt »Με το ακόλουθο περιεχόμενο για να εξασκήσετε αυτό το παράδειγμα. Εδώ, τα πεδία χωρίζονται με μια καρτέλα.

salesinfo.txt

Τα 700000 μου
Τα 800000 σου
Τετ 750000
Συλλέξτε 200000
Παρ 430000
Σάββατο 820000

Εκτελέστε την ακόλουθη εντολή για να διαβάσετε τα αριθμητικά πεδία του salesinfo.txt αρχειοθετήστε και εκτυπώστε το σύνολο του συνολικού ποσού πωλήσεων. Εδώ, η τρίτη παράμετρος, 'G' υποδεικνύει την παγκόσμια αναζήτηση. Αυτό σημαίνει ότι το μοτίβο θα αναζητηθεί στο πλήρες περιεχόμενο του αρχείου.

$awk '{x = gensub (' t ',' ',' G ', $ 2); printf x '+'} END {print 0} 'salesinfo.txt| προ ΧΡΙΣΤΟΥ -ο

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με συνάρτηση rand ()

σειρά() Η συνάρτηση χρησιμοποιείται για τη δημιουργία τυχαίου αριθμού μεγαλύτερου από 0 και μικρότερου από 1. Έτσι, θα παράγει πάντα έναν κλασματικό αριθμό μικρότερο από 1. Η ακόλουθη εντολή θα δημιουργήσει έναν κλασματικό τυχαίο αριθμό και θα πολλαπλασιάσει την τιμή με 10 για να πάρει έναν αριθμό μεγαλύτερο από 1. Ένας κλασματικός αριθμός με δύο ψηφία μετά την υποδιαστολή θα εκτυπωθεί για την εφαρμογή της συνάρτησης printf (). Εάν εκτελέσετε την ακόλουθη εντολή πολλές φορές, θα έχετε διαφορετική έξοδο κάθε φορά.

$awk 'BEGIN {printf' Number is =%. 2f n ', rand ()*10}'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk συνάρτηση που ορίζεται από το χρήστη

Όλες οι συναρτήσεις που χρησιμοποιήθηκαν στα προηγούμενα παραδείγματα είναι ενσωματωμένες συναρτήσεις. Αλλά μπορείτε να δηλώσετε μια συνάρτηση που ορίζεται από το χρήστη στο σενάριο awk για να εκτελέσετε οποιαδήποτε συγκεκριμένη εργασία. Ας υποθέσουμε ότι θέλετε να δημιουργήσετε μια προσαρμοσμένη συνάρτηση για τον υπολογισμό του εμβαδού ενός ορθογωνίου. Για να εκτελέσετε αυτήν την εργασία, δημιουργήστε ένα αρχείο με το όνομα ' area.awk »Με το παρακάτω σενάριο. Σε αυτό το παράδειγμα, μια συνάρτηση που ορίζεται από το χρήστη με όνομα περιοχή() δηλώνεται στο σενάριο που υπολογίζει την περιοχή με βάση τις παραμέτρους εισόδου και επιστρέφει την τιμή περιοχής. getline Η εντολή χρησιμοποιείται εδώ για να λάβει είσοδο από τον χρήστη.

area.awk

# Υπολογίστε την περιοχή
λειτουργίαπεριοχή(ύψος,πλάτος){
ΕΠΙΣΤΡΟΦΗύψος*πλάτος
}

# Ξεκινά την εκτέλεση
ΝΑ ΑΡΧΙΣΕΙ{
Τυπώνω'Εισαγάγετε την τιμή του ύψους:'
getline η< '-'
Τυπώνω'Εισαγάγετε την τιμή πλάτους:'
getline w< '-'
Τυπώνω'Περιοχή ='περιοχή(η,σε)
}

Εκτελέστε το σενάριο.

$awk -φάarea.awk

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk αν παραδειγμα

Το awk υποστηρίζει δηλώσεις υπό όρους όπως άλλες τυπικές γλώσσες προγραμματισμού. Τρεις τύποι εντολών if εμφανίζονται σε αυτήν την ενότητα χρησιμοποιώντας τρία παραδείγματα. Δημιουργήστε ένα αρχείο κειμένου με όνομα items.txt με το ακόλουθο περιεχόμενο.

items.txt

HDD Samsung 100 $
Ποντίκι A4Tech
Εκτυπωτής HP 200 $

Απλό αν είναι παράδειγμα :

αυτός μετά την εντολή θα διαβάσει το περιεχόμενο του items.txt αρχείο και ελέγξτε το 3rd τιμή πεδίου σε κάθε γραμμή. Εάν η τιμή είναι κενή, θα εκτυπώσει ένα μήνυμα σφάλματος με τον αριθμό γραμμής.

$awk '{if ($ 3 == '') print' Το πεδίο τιμών λείπει στη γραμμή 'NR}'items.txt

Παραγωγή:

αν-αλλιώς παράδειγμα:

Η ακόλουθη εντολή θα εκτυπώσει την τιμή του προϊόντος εάν το 3rdυπάρχει στη γραμμή, διαφορετικά, θα εκτυπώσει ένα μήνυμα σφάλματος.

$ awk'{if ($ 3 ==' ') print' Λείπει το πεδίο τιμής '
αλλιώς εκτύπωση 'η τιμή του στοιχείου είναι' $ 3} '
αντικείμενα.κείμενο

Παραγωγή:

if-else-if παράδειγμα:

Όταν η ακόλουθη εντολή θα εκτελεστεί από το τερματικό, θα λάβει είσοδο από τον χρήστη. Η τιμή εισόδου συγκρίνεται με κάθε συνθήκη εάν η συνθήκη είναι αληθής. Εάν οποιαδήποτε συνθήκη γίνει αληθινή, τότε θα εκτυπώσει τον αντίστοιχο βαθμό. Εάν η τιμή εισόδου δεν ταιριάζει με οποιαδήποτε συνθήκη, τότε η εκτύπωση αποτυγχάνει.

$awk 'BEGIN {print' Πληκτρολογήστε το σήμα: '
σήμα getline<'-'
εάν (σήμα> = 90) εκτύπωση 'A+'
αλλιώς εάν (mark> = 80) εκτυπώστε 'A'
αλλιώς αν (σήμα> = 70) εκτύπωση 'B+'
αλλιώς εκτύπωση 'Fail'} '

Παραγωγή:

Μετάβαση στο Περιεχόμενο

μεταβλητές awk

Η δήλωση της μεταβλητής awk είναι παρόμοια με τη δήλωση της μεταβλητής κελύφους. Υπάρχει διαφορά στην ανάγνωση της τιμής της μεταβλητής. Το σύμβολο '$' χρησιμοποιείται με το όνομα της μεταβλητής για τη μεταβλητή κελύφους για την ανάγνωση της τιμής. Αλλά δεν χρειάζεται να χρησιμοποιήσετε το '$' με μεταβλητή awk για να διαβάσετε την τιμή.

Χρησιμοποιώντας απλή μεταβλητή:

Η ακόλουθη εντολή θα δηλώσει μια μεταβλητή με όνομα 'ιστοσελίδα' και μια τιμή συμβολοσειράς εκχωρείται σε αυτήν τη μεταβλητή. Η τιμή της μεταβλητής εκτυπώνεται στην επόμενη πρόταση.

$awk 'BEGIN {site =' LinuxHint.com '; ιστότοπος εκτύπωσης} '

Παραγωγή:

Χρήση μιας μεταβλητής για ανάκτηση δεδομένων από ένα αρχείο

Η ακόλουθη εντολή θα αναζητήσει τη λέξη 'Εκτυπωτής' στο αρχείο items.txt Το Εάν οποιαδήποτε γραμμή του αρχείου ξεκινά με 'Εκτυπωτής Τότε θα αποθηκεύσει την αξία του 1st , 2nd και 3rd πεδία σε τρεις μεταβλητές. όνομα και τιμή οι μεταβλητές θα εκτυπωθούν.

$ awk'/ Εκτυπωτής/ {name = $ 1; μάρκα = $ 2; τιμή = 3 $; εκτύπωση' item name = 'name;
εκτύπωση 'τιμή τιμή =' τιμή} '
αντικείμενα.κείμενο

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk συστοιχίες

Τόσο οι αριθμητικοί όσο και οι σχετικοί πίνακες μπορούν να χρησιμοποιηθούν σε awk. Η δήλωση μεταβλητής πίνακα στο awk είναι ίδια με άλλες γλώσσες προγραμματισμού. Ορισμένες χρήσεις συστοιχιών εμφανίζονται σε αυτήν την ενότητα.

Συσκευαστικός πίνακας:

Ο δείκτης του πίνακα θα είναι οποιαδήποτε συμβολοσειρά για τον συσχετιστικό πίνακα. Σε αυτό το παράδειγμα, δηλώνεται και εκτυπώνεται ένας συσχετιστικός πίνακας τριών στοιχείων.

$awk 'ΝΑ ΑΡΧΙΣΕΙ {
βιβλία ['Web Design'] = 'Εκμάθηση HTML 5';
βιβλία ['Web Programming'] = 'PHP και MySQL'
books ['PHP Framework'] = 'Learning Laravel 5'
printf '%s n%s n%s n', βιβλία ['Web Design'], βιβλία ['Web Programming'],
βιβλία ['PHP Framework']} '

Παραγωγή:

Αριθμητικός πίνακας:

Ένας αριθμητικός πίνακας τριών στοιχείων δηλώνεται και εκτυπώνεται με διαχωριστική καρτέλα.

$ awk'ΝΑ ΑΡΧΙΣΕΙ {
αριθμός [0] = 80;
αριθμός [1] = 55;
αριθμός [2] = 76;

# στοιχεία πίνακα εκτύπωσης
printf 'Τιμές πίνακα: %d t%ρε t%ρε n», αριθμός [0], αριθμός [1], αριθμός [2] · } '

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk loop

Τρεις τύποι βρόχων υποστηρίζονται από το awk. Οι χρήσεις αυτών των βρόχων φαίνονται εδώ χρησιμοποιώντας τρία παραδείγματα.

Ενώ βρόχος:

ενώ ο βρόχος που χρησιμοποιείται στην ακόλουθη εντολή θα επαναληφθεί για 5 φορές και θα εξέλθει από την πρόταση βρόχου για διακοπή.

$ awk 'ΑΡΧΗ {n = 1; ενώ (n 5) σπάσει. εκτύπωση n; n ++}} '

Παραγωγή:

Για βρόχο:

Για βρόχο που χρησιμοποιείται στην ακόλουθη εντολή awk θα υπολογίσει το άθροισμα από 1 έως 10 και θα εκτυπώσει την τιμή.

$awk 'BEGIN {sum = 0; για (n = 1; n<= 10; n++) sum=sum+n; print sum }'

Παραγωγή:

Βρόχος Do-while:

ένας βρόχος do-while της ακόλουθης εντολής θα εκτυπώσει όλους τους ζυγούς αριθμούς από 10 έως 5.

$awk 'BEGIN {counter = 10; κάντε {if (counter%2 == 0) counter counter; μετρητής-- }
ενώ (μετρητής> 5)} '

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk για εκτύπωση της πρώτης στήλης

Η πρώτη στήλη οποιουδήποτε αρχείου μπορεί να εκτυπωθεί χρησιμοποιώντας μεταβλητή $ 1 σε awk. Εάν όμως η τιμή της πρώτης στήλης περιέχει πολλές λέξεις, τότε εκτυπώνεται μόνο η πρώτη λέξη της πρώτης στήλης. Χρησιμοποιώντας έναν συγκεκριμένο οριοθέτη, η πρώτη στήλη μπορεί να εκτυπωθεί σωστά. Δημιουργήστε ένα αρχείο κειμένου με όνομα μαθητές.txt με το ακόλουθο περιεχόμενο. Εδώ, η πρώτη στήλη περιέχει το κείμενο δύο λέξεων.

Φοιτητές.txt

Κάνιζ Φατέμα 30ουσύνολο παραγωγής
Αμπίρ Χοσέιν 35ουσύνολο παραγωγής
Ιωάννης Αβραάμ 40ουσύνολο παραγωγής

Εκτελέστε την εντολή awk χωρίς οριοθέτηση. Το πρώτο μέρος της πρώτης στήλης θα εκτυπωθεί.

$awk '{print $ 1}'μαθητές.txt

Εκτελέστε την εντολή awk με τον ακόλουθο οριοθέτη. Το πλήρες μέρος της πρώτης στήλης θα εκτυπωθεί.

$awk -ΦΑ '\ s \ s' '{print $ 1}'μαθητές.txt

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk για εκτύπωση της τελευταίας στήλης

$ (NF) μεταβλητή μπορεί να χρησιμοποιηθεί για την εκτύπωση της τελευταίας στήλης οποιουδήποτε αρχείου. Οι ακόλουθες εντολές awk θα εκτυπώσουν το τελευταίο μέρος και το πλήρες μέρος της τελευταίας στήλης του οι μαθητές.txt αρχείο.

$awk '{print $ (NF)}'μαθητές.txt
$awk -ΦΑ '\ s \ s' '{print $ (NF)}'μαθητές.txt

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με grep

Το grep είναι μια άλλη χρήσιμη εντολή του Linux για αναζήτηση περιεχομένου σε ένα αρχείο που βασίζεται σε τυπική έκφραση. Ο τρόπος με τον οποίο μπορούν να χρησιμοποιηθούν τόσο οι εντολές awk όσο και οι grep φαίνεται στο ακόλουθο παράδειγμα. λαβή Η εντολή χρησιμοποιείται για την αναζήτηση πληροφοριών του αναγνωριστικού υπαλλήλου, ' 1002 ' από ο υπάλληλος.txt αρχείο. Η έξοδος της εντολής grep θα σταλεί στο awk ως δεδομένα εισόδου. Το μπόνους 5% θα υπολογίζεται και θα εκτυπώνεται με βάση τον μισθό του αναγνωριστικού υπαλλήλου, ' 1002 ' με εντολή awk.

$Γάταυπάλληλος.txt
$λαβή '1002'υπάλληλος.txt| awk -ΦΑ ' t' Το '{print $ 2' θα λάβει $ '($ 3*5)/100' μπόνους '}'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με αρχείο BASH

Όπως και άλλες εντολές Linux, η εντολή awk μπορεί επίσης να χρησιμοποιηθεί σε ένα σενάριο BASH. Δημιουργήστε ένα αρχείο κειμένου με όνομα customers.txt με το ακόλουθο περιεχόμενο. Κάθε γραμμή αυτού του αρχείου περιέχει πληροφορίες για τέσσερα πεδία. Αυτά είναι το αναγνωριστικό του πελάτη, το όνομα, η διεύθυνση και ο αριθμός κινητού που χωρίζονται με ‘/ '.

customers.txt

AL4934 / Charles M Brunner / 4838 Beeghley Street, Huntsville, Αλαμπάμα / 256-671-7942
CA5455 / Virginia S Mota / 930 Bassel Street, VALLECITO, Καλιφόρνια / 415-679-5908
IL4855 / Ann A Neale / 1932 Patterson Fork Road, Σικάγο, Ιλινόις / 773-550-5107

Δημιουργήστε ένα αρχείο bash με όνομα item_search.bash με το παρακάτω σενάριο. Σύμφωνα με αυτό το σενάριο, η τιμή κατάστασης θα αφαιρεθεί από τον χρήστη και θα πραγματοποιηθεί αναζήτηση the customers.txt αρχείο από λαβή εντολή και πέρασε στην εντολή awk ως είσοδο. Η εντολή Awk θα διαβάσει 2nd και 4ου πεδία κάθε γραμμής. Εάν η τιμή εισόδου ταιριάζει με οποιαδήποτε κατάσταση κατάστασης του customers.txt αρχείο τότε θα εκτυπώσει τα του πελάτη όνομα και αριθμός κινητού , διαφορετικά, θα εκτυπώσει το μήνυμα Δεν βρέθηκε πελάτης Το

item_search.bash

#!/bin/bash
πέταξε έξω 'Εισαγάγετε το όνομα της πολιτείας:'
ανάγνωσηκατάσταση
οι πελάτες='λαβή '$ state'customers.txt| awk -ΦΑ '/' '{print' Όνομα πελάτη: '$ 2,',
Αριθμός κινητού: '$ 4}'
'
αν [ '$ πελάτες' !='' ]?τότε
πέταξε έξω $ πελάτες
αλλού
πέταξε έξω «Δεν βρέθηκε πελάτης»
είναι

Εκτελέστε τις ακόλουθες εντολές για να εμφανίσετε τις εξόδους.

$Γάταcustomers.txt
$κτυπώ δυνατάitem_search.bash

Παραγωγή:

Μετάβαση στο Περιεχόμενο

awk με sed

Ένα άλλο χρήσιμο εργαλείο αναζήτησης του Linux είναι sed Το Αυτή η εντολή μπορεί να χρησιμοποιηθεί τόσο για αναζήτηση όσο και για αντικατάσταση κειμένου οποιουδήποτε αρχείου. Το ακόλουθο παράδειγμα δείχνει τη χρήση της εντολής awk με sed εντολή. Εδώ, η εντολή sed θα αναζητήσει όλα τα ονόματα των εργαζομένων ξεκινά με « J Και περνάει στην εντολή awk ως είσοδο. awk θα εκτυπώσει υπάλληλο όνομα και ταυτότητα μετά τη μορφοποίηση.

$Γάταυπάλληλος.txt
$sed '/J/p'υπάλληλος.txt| awk -ΦΑ ' t' '{printf'%s (%s) n ', $ 2, $ 1}'

Παραγωγή:

Μετάβαση στο Περιεχόμενο

Συμπέρασμα:

Μπορείτε να χρησιμοποιήσετε την εντολή awk για να δημιουργήσετε διαφορετικούς τύπους αναφορών βάσει τυχόν πίνακα ή οριοθετημένων δεδομένων, αφού φιλτράρετε σωστά τα δεδομένα. Ελπίζω, θα μπορείτε να μάθετε πώς λειτουργεί η εντολή awk αφού εξασκηθείτε στα παραδείγματα που εμφανίζονται σε αυτό το σεμινάριο.