Πώς να διαβάσετε την είσοδο Awk από το STDIN στο Linux - Μέρος 7


Στα προηγούμενα μέρη της σειράς εργαλείων Awk, εξετάσαμε την ανάγνωση εισόδου κυρίως από ένα(α) αρχείο(α), αλλά τι γίνεται αν θέλετε να διαβάσετε τα δεδομένα από το STDIN.

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

Θα ξεκινήσουμε με το βοηθητικό πρόγραμμα dir που λειτουργεί παρόμοια με την εντολή ls, στο πρώτο παράδειγμα παρακάτω, χρησιμοποιούμε την έξοδο της εντολής dir -l ως είσοδο για το Awk για να εκτυπώσουμε το όνομα χρήστη, το όνομα ομάδας και τα αρχεία του κατόχου /she κατέχει στον τρέχοντα κατάλογο:

dir -l | awk '{print $3, $4, $9;}'

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

dir -l | awk '$3=="root" {print $1,$3,$4, $9;} '

Η παραπάνω εντολή περιλαμβάνει τον τελεστή σύγκρισης (==) για να μας βοηθήσει να φιλτράρουμε αρχεία στον τρέχοντα κατάλογο που ανήκουν στον χρήστη root. Αυτό επιτυγχάνεται χρησιμοποιώντας την έκφραση $3== ”root ”.

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

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

cat tecmint_deals.txt
cat tecmint_deals.txt | awk '$4 ~ /tech/{print}'
cat tecmint_deals.txt | awk '$4 ~ /Tech/{print}'

Στο παραπάνω παράδειγμα, χρησιμοποιήσαμε τον τελεστή σύγκρισης τιμής ~ /pattern/, αλλά υπάρχουν δύο εντολές για να προσπαθήσουμε να αναδείξουμε κάτι πολύ σημαντικό.

Όταν εκτελείτε την εντολή με μοτίβο tech δεν εκτυπώνεται τίποτα επειδή δεν υπάρχει συμφωνία αυτού του τύπου, αλλά με Tech, λαμβάνετε προσφορές πληκτρολογήστε Tech.

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

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

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