Πώς να χρησιμοποιήσετε την εντολή awk στο Linux

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

How awk πήρε το όνομά του

Η εντολή awk ονομάστηκε χρησιμοποιώντας τα αρχικά των τριών ατόμων που έγραψαν την αρχική έκδοση το 1977: Άλφρεντ Άχο, Peter Weinberger, και Μπράιαν Κέρνιγκαν. Αυτοί οι τρεις άνδρες ήταν από τους θρυλικούς AT&T Εργαστήρια Bell Unix πάνθεον. Με τη συνεισφορά πολλών άλλων από τότε, το awk συνέχισε να εξελίσσεται.

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

Κανόνες, Μοτίβα και Ενέργειες

Το awk λειτουργεί σε προγράμματα που περιέχουν κανόνες που αποτελούνται από μοτίβα και ενέργειες. Η ενέργεια εκτελείται στο κείμενο που ταιριάζει με το μοτίβο. Τα σχέδια περικλείονται σε σγουρά τιράντες ({}). Μαζί, ένα μοτίβο και μια δράση αποτελούν έναν κανόνα. Ολόκληρο το πρόγραμμα awk περικλείεται σε μονά εισαγωγικά (‘).

  Πώς να βελτιώσετε τη διάρκεια ζωής της μπαταρίας σε φορητούς υπολογιστές Linux

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

Ακολουθεί η τυπική έξοδος από who:

who

ο

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

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

  Πώς να εγκαταστήσετε το Upterm σε Linux

Πληκτρολογούμε τα εξής:

who | awk '{print $1}'

Το awk εκτυπώνει το πρώτο πεδίο και απορρίπτει την υπόλοιπη γραμμή.

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

Πληκτρολογούμε τα εξής για να εκτυπώσουμε επίσης την ώρα σύνδεσης του ατόμου (πεδίο τέσσερα):

who | awk '{print $1,$4}'

Υπάρχουν μερικά ειδικά αναγνωριστικά πεδίων. Αυτά αντιπροσωπεύουν ολόκληρη τη γραμμή κειμένου και το τελευταίο πεδίο στη γραμμή κειμένου:

$0: Αντιπροσωπεύει ολόκληρη τη γραμμή κειμένου.
$1: Αντιπροσωπεύει το πρώτο πεδίο.
$2: Αντιπροσωπεύει το δεύτερο πεδίο.
$7: Αντιπροσωπεύει το έβδομο πεδίο.
$45: Αντιπροσωπεύει το 45ο πεδίο.
$NF: Σημαίνει “αριθμός πεδίων” και αντιπροσωπεύει το τελευταίο πεδίο.

  Πώς να ελέγξετε τον πυρήνα του Linux και την έκδοση λειτουργικού συστήματος

Θα πληκτρολογήσουμε τα παρακάτω για να εμφανιστεί ένα μικρό αρχείο κειμένου που περιέχει ένα σύντομο απόσπασμα που αποδίδεται Ντένις Ρίτσι:

cat dennis_ritchie.txt

ο

Θέλουμε το awk να εκτυπώνει το πρώτο, το δεύτερο και το τελευταίο πεδίο της προσφοράς. Σημειώστε ότι παρόλο που είναι τυλιγμένο στο παράθυρο του τερματικού, είναι απλώς μια γραμμή κειμένου.

Πληκτρολογούμε την παρακάτω εντολή:

awk '{print $1,$2,$NF}' dennis_ritchie.txt

Δεν ξέρουμε αυτή την «απλότητα». είναι το 18ο πεδίο στη γραμμή του κειμένου και δεν μας ενδιαφέρει. Αυτό που γνωρίζουμε είναι ότι είναι το τελευταίο πεδίο και μπορούμε να χρησιμοποιήσουμε το $NF για να λάβουμε την τιμή του. Η περίοδος θεωρείται απλώς ένας άλλος χαρακτήρας στο