Πώς να εξαιρέσετε μια λέξη με το grep
Πίνακας περιεχομένων:
Το εργαλείο γραμμής εντολών grep είναι εξαιρετικά χρήσιμο για την αναζήτηση μέσω δεδομένων κειμένου για γραμμές και αποσπάσματα που ταιριάζουν με μια καθορισμένη συμβολοσειρά, χαρακτήρα, λέξη ή κανονική έκφραση. Ενώ οι περισσότερες χρήσεις του grep αφορούν την ταξινόμηση δεδομένων για αντιστοιχίσεις σύνταξης, τι γίνεται αν θέλετε να εξαιρέσετε μια λέξη ή μια συμβολοσειρά με grep; Η εξαίρεση των αντιστοιχίσεων γραμμών με το grep είναι εξίσου χρήσιμη με την εύρεση και την εκτύπωση αντιστοιχιών στο grep, οπότε ας εξετάσουμε πώς να εξαιρέσουμε τις αντιστοιχίσεις συμβολοσειρών και να εξαιρέσουμε λέξεις με το grep.
Προφανώς θα θέλετε να έχετε κάποια εμπειρία στη γραμμή εντολών και να εκθέσετε το grep για να το βρείτε χρήσιμο. Εάν θέλετε να ακολουθήσετε, μπορείτε να ανοίξετε την εφαρμογή Terminal και να τη δοκιμάσετε μόνοι σας. Δεδομένου ότι το grep είναι ένα βοηθητικό πρόγραμμα αγνωστικοποίησης του λειτουργικού συστήματος, μπορείτε να χρησιμοποιήσετε το τέχνασμα εξαίρεσης σε Mac OS, Linux, unix ή οτιδήποτε άλλο έχετε που χρησιμοποιεί grep.
Πώς να εξαιρέσετε μια λέξη με το grep
Ο πιο απλός τρόπος για να εξαιρέσετε γραμμές με συμβολοσειρά ή αντιστοίχιση σύνταξης είναι χρησιμοποιώντας grep και τη σημαία -v.
Για παράδειγμα, ας υποθέσουμε ότι χρησιμοποιούμε το cat για να εκτυπώσουμε ένα αρχείο στη γραμμή εντολών, αλλά θέλουμε να εξαιρέσουμε όλες τις γραμμές που περιλαμβάνουν τον όρο "ThisWord", τότε η σύνταξη θα έχει την εξής μορφή:
cat example.txt | grep -v ThisWord"
Η έξοδος θα είναι το αρχείο κειμένου example.txt, αλλά εξαιρείται κάθε γραμμή που περιέχει μια αντιστοίχιση συμβολοσειράς με το "ThisWord".
Μπορείτε επίσης να χρησιμοποιήσετε το grep απευθείας σε αρχεία και να εξαιρέσετε αντιστοιχίσεις γραμμών με βάση λέξεις ή σύνταξη, όπως:
"grep -v ThisWord>"
Χρησιμοποιήστε αυτό που λειτουργεί καλύτερα για τη συγκεκριμένη ροή εργασίας σας.
Πώς να εξαιρέσετε πολλές συμβολοσειρές ή λέξεις με το grep
Τώρα που ξέρετε πώς να εξαιρέσετε αντιστοιχίσεις για μια μεμονωμένη λέξη, η επόμενη προφανής ερώτηση αφορά την εξαίρεση πολλών λέξεων με το grep. Αυτό είναι εξίσου απλό και υπάρχουν μερικοί διαφορετικοί τρόποι για να το πετύχετε χρησιμοποιώντας τη σημαία -v καθώς και τη σημαία -e.
Πρώτα ας πάρουμε το παραπάνω παράδειγμα χρήσης της cat σε ένα αρχείο που διοχετεύεται στο grep και να εξαιρέσουμε οποιεσδήποτε γραμμές ταιριάζουν με δύο λέξεις. "Word1" και "Word2", αυτό θα μοιάζει με το εξής:
"cat example.txt | grep -v -e Word1 -e Word2"
Οποιεσδήποτε γραμμές περιέχουν "Word1" ή "Word2" θα εξαιρεθούν από τα εκτυπωμένα αποτελέσματα.
Μπορείτε επίσης να χρησιμοποιήσετε το grep απευθείας σε αρχεία όπως και πριν:
"grep -v -e Word1 -e Word2 παράδειγμα.txt"
Μια άλλη προσέγγιση είναι να διαχωρίσετε τι να αποκλείσετε με το grep χρησιμοποιώντας ένα σωλήνα για να διαχωρίσετε κάθε αγώνα, όπως:
grep -Ev λέξη1|λέξη2 παράδειγμα.txt"
Εάν δοκιμάσετε οποιαδήποτε από αυτές τις επιλογές σε ένα παράδειγμα αρχείου κειμένου, θα διαπιστώσετε ότι η έξοδος είναι πανομοιότυπη ανεξάρτητα από την προσέγγιση που ακολουθείτε, καθεμία από τις γραμμές που περιλαμβάνουν τις στοχευμένες φράσεις, σύνταξη, λέξεις ή αντιστοίχιση κειμένου.
Τέλεια, δείξε μου ένα χρήσιμο παράδειγμα εξαίρεσης δεδομένων με grep!
Για ένα πρακτικό παράδειγμα που οι προχωρημένοι χρήστες Mac μπορεί να θεωρήσουν χρήσιμο, μπορούμε να χρησιμοποιήσουμε την εξαίρεση grep κατά την εκτύπωση και την υποβολή ερωτημάτων στο ιστορικό της γραμμής εντολών για να βρούμε εντολές που εκτελέστηκαν προηγουμένως για να βρούμε αντιστοιχίσεις προεπιλογών, αλλά εξαιρώντας ορισμένες επιλεγμένες προεπιλεγμένες συμβολοσειρές από το παραγωγή.
Στο παράδειγμα εδώ θα εκτυπώσουμε το ιστορικό εντολών για τις προεπιλεγμένες αντιστοιχίσεις συμβολοσειρών, αλλά θα εξαιρέσουμε οτιδήποτε ταιριάζει με το iTunes όπως ορίζεται από το "com.apple.itunes":
"history |grep προεπιλογές γράφουν |grep -v -e com.apple.itunes"
Έτσι, εάν παρακολουθείτε, θα αναφέρει όλες τις ιστορικές εκτελέσεις της εντολής "εγγραφής προεπιλογών", αλλά εξαιρώντας οτιδήποτε αφορούσε την εφαρμογή iTunes. Ωραίο ε;
Αν έχετε ιδιαίτερες χρήσεις εξαίρεσης αγώνων με το grep, μοιραστείτε τις μαζί μας στα παρακάτω σχόλια! Και αν σας άρεσε αυτό το άρθρο, σίγουρα θα θέλατε να περιηγηθείτε στα πολλά άρθρα της γραμμής εντολών μας εδώ, όπου υπάρχουν πολλά περισσότερα να μάθετε!