Σε αυτό το άρθρο, θα εξηγήσουμε τη χρήση του βοηθητικού προγράμματος grep με διαφορετικά παραδείγματα. Θα χρησιμοποιήσουμε το Debian 10 για να εξηγήσουμε τις εντολές και τις μεθόδους που αναφέρονται σε αυτό το άρθρο.
Εγκατάσταση του Grep
Το Grep έρχεται εγκατεστημένο στις περισσότερες διανομές Linux. Ωστόσο, σε περίπτωση που λείπει από το σύστημά σας, μπορείτε να το εγκαταστήσετε χρησιμοποιώντας την ακόλουθη μέθοδο στο Τερματικό:
$sudo apt-get install λαβή
Χρησιμοποιώντας το Grep
Εδώ είναι η βασική σύνταξη της εντολής grep. Ξεκινά με grep ακολουθούμενη από ορισμένες επιλογές και κριτήρια αναζήτησης και μετά τελειώνει με το όνομα του αρχείου.
$λαβή [επιλογές]ΠΡΟΤΥΠΟ[ΑΡΧΕΙΟ...]
Αναζήτηση αρχείων
Για να αναζητήσετε ένα όνομα αρχείου σε έναν κατάλογο που περιέχει μια συγκεκριμένη συμβολοσειρά, μπορείτε να χρησιμοποιήσετε το grep με τον ακόλουθο τρόπο:
$ls -ο | λαβή -Εγώσειρά
Για παράδειγμα, για να αναζητήσετε ένα όνομα αρχείου που περιέχει μια συμβολοσειρά δοκιμή , η εντολή θα είναι:
$ls-ο| λαβή-ΕγώδοκιμήΑυτή η εντολή παραθέτει όλα τα αρχεία που περιέχουν τη συμβολοσειρά δοκιμή Το
Αναζήτηση για μια συμβολοσειρά σε ένα αρχείο
Για να αναζητήσετε μια συμβολοσειρά σε ένα συγκεκριμένο αρχείο, μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνταξη εντολών:
$λαβήόνομα αρχείου συμβολοσειράςΓια παράδειγμα, για αναζήτηση συμβολοσειράς δοκιμή σε ένα όνομα με όνομα testfile1 , χρησιμοποιήσαμε την ακόλουθη εντολή :
$λαβήtestfile εργαζομένων1Το παραπάνω αποτέλεσμα επέστρεψε την πρόταση από το testfile1 που περιέχει τη συμβολοσειρά υπάλληλος Το
Αναζητήστε μια συμβολοσειρά σε πολλά αρχεία
Για να αναζητήσετε μια συμβολοσειρά σε πολλά αρχεία, μπορείτε να χρησιμοποιήσετε την ακόλουθη σύνταξη εντολών:
$λαβήstring filename1 filename2Για παράδειγμα, για να αναζητήσουμε έναν υπάλληλο συμβολοσειράς στα δύο αρχεία μας testfile1 και testfile2, χρησιμοποιήσαμε την ακόλουθη εντολή:
$λαβήtestfile1 υπαλλήλου testfile2Η παραπάνω εντολή θα απαριθμήσει όλες τις γραμμές που περιέχουν τον υπάλληλο συμβολοσειράς και από τα αρχεία testfile1 και testfile2.
Μπορείτε επίσης να χρησιμοποιήσετε έναν χαρακτήρα μπαλαντέρ αν όλα τα ονόματα αρχείων ξεκινούν με το ίδιο κείμενο.
$λαβήόνομα αρχείου συμβολοσειράς*Όπως, αν πάρουμε το παραπάνω παράδειγμα στο οποίο ήταν τα ονόματα αρχείων μας testfile1 και testfile2 , η εντολή θα είναι:
$λαβήδοκιμαστικό αρχείο υπαλλήλου*Αναζητήστε μια συμβολοσειρά σε ένα αρχείο αγνοώντας την περίπτωση της συμβολοσειράς
Τις περισσότερες φορές, το συναντάτε όταν αναζητάτε κάτι χρησιμοποιώντας grep αλλά δεν λαμβάνετε έξοδο. Αυτό συμβαίνει λόγω αναντιστοιχίας περιπτώσεων κατά την αναζήτηση μιας συμβολοσειράς. Όπως στο παράδειγμά μας, αν χρησιμοποιούμε κατά λάθος Υπάλληλος αντί υπάλληλος , θα επιστρέψει στο μηδέν καθώς το αρχείο μας περιέχει τη συμβολοσειρά υπάλληλος με πεζά γράμματα.
Μπορείτε να πείτε στο grep να αγνοήσει την περίπτωση της συμβολοσειράς αναζήτησης χρησιμοποιώντας –i flag μετά το grep ως εξής:
$λαβή–I όνομα αρχείου συμβολοσειράςΧρησιμοποιώντας τη σημαία –i, η εντολή θα εκτελέσει αναζήτηση χωρίς διάκριση πεζών -κεφαλαίων και θα επιστρέψει όλες τις γραμμές που περιέχουν τη συμβολοσειρά υπάλληλος σε αυτό χωρίς να λαμβάνεται υπόψη τα γράμματα είναι κεφαλαία ή πεζά.
Αναζήτηση χρησιμοποιώντας την κανονική έκφραση
Εάν χρησιμοποιείται σωστά, η κανονική έκφραση είναι ένα πολύ αποτελεσματικό χαρακτηριστικό στο grep. Με την εντολή Grep, μπορείτε να ορίσετε μια κανονική έκφραση με λέξη -κλειδί έναρξης και λήξης. Με αυτόν τον τρόπο, δεν θα χρειαστεί να πληκτρολογήσετε ολόκληρη τη γραμμή με την εντολή grep. Η ακόλουθη σύνταξη μπορεί να χρησιμοποιηθεί για το σκοπό αυτό.
$λαβήαρχική λέξη -κλειδί.*λήξηΚλειδί λέξης όνομα αρχείουΓια παράδειγμα, για να αναζητήσετε μια γραμμή σε ένα αρχείο που ονομάζεται testfile1 που ξεκινά με τη συμβολοσειρά this και τελειώνει με τα δεδομένα συμβολοσειράς, χρησιμοποιήσαμε την ακόλουθη εντολή:
$λαβήΑυτό.*αρχείο δοκιμής δεδομένων 1Θα εκτυπώσει ολόκληρη τη γραμμή από το testfile1 που περιέχει την έκφραση (λέξη -κλειδί έναρξης αυτό και δεδομένα λήξης λέξης -κλειδιού).
Εκτυπώστε συγκεκριμένο αριθμό γραμμών μετά/πριν από τη συμβολοσειρά αναζήτησης
Μπορείτε επίσης να εμφανίσετε τον συγκεκριμένο αριθμό γραμμών σε ένα αρχείο πριν/μετά από μια αντιστοίχιση συμβολοσειράς μαζί με την ίδια την αντιστοιχισμένη συμβολοσειρά. Η ακόλουθη σύνταξη μπορεί να χρησιμοποιηθεί για το σκοπό αυτό:
$λαβή -ΠΡΟΣ ΤΟ <Ν>>όνομα αρχείου συμβολοσειράςΘα εμφανίσει N αριθμό γραμμών μετά την αντιστοίχιση της συμβολοσειράς στο καθορισμένο αρχείο, συμπεριλαμβανομένης της αντιστοιχισμένης συμβολοσειράς.
Για παράδειγμα, αυτό είναι το δείγμα αρχείου που ονομάζεται testfile2 Το
Η ακόλουθη εντολή θα εξάγει την αντιστοιχισμένη γραμμή που περιέχει τη συμβολοσειρά υπάλληλος , μαζί με τις 2 γραμμές μετά από αυτό.
$λαβή-ΠΡΟΣ ΤΟ2–I testfile υπαλλήλου2Ομοίως, για να εμφανίσετε N αριθμό γραμμών πριν από την αντιστοιχισμένη συμβολοσειρά σε ένα συγκεκριμένο αρχείο, χρησιμοποιήστε την ακόλουθη σύνταξη:
$λαβή -ΣΙ <Ν>>όνομα αρχείου συμβολοσειράςΓια να εμφανίσετε N αριθμό γραμμών γύρω από τη συμβολοσειρά σε ένα συγκεκριμένο αρχείο, χρησιμοποιήστε την ακόλουθη σύνταξη:
$λαβή -ΝΤΟ <Ν>>όνομα αρχείου συμβολοσειράςΕπισημαίνοντας την αναζήτηση
Το Grep από προεπιλογή εκτυπώνει αντιστοιχισμένες γραμμές αλλά δεν δείχνει ποιο τμήμα της γραμμής αντιστοιχεί. Εάν χρησιμοποιείτε την επιλογή –color με grep, θα εμφανιστεί πού εμφανίζονται οι συμβολοσειρές επεξεργασίας στο αρχείο σας. Grep από προεπιλογή χρησιμοποιήστε το κόκκινο χρώμα για την επισήμανση.
Η ακόλουθη σύνταξη μπορεί να χρησιμοποιηθεί για το σκοπό αυτό:
$λαβήόνομα αρχείου συμβολοσειράς--χρώμαΜετρώντας τον αριθμό των αγώνων
Εάν θέλετε να μετρήσετε πόσες φορές εμφανίζεται μια συγκεκριμένη λέξη σε ένα συγκεκριμένο αρχείο, μπορείτε να χρησιμοποιήσετε την επιλογή grep με –c. Επιστρέφει μόνο τον αριθμό των αγώνων παρά τους ίδιους τους αγώνες. Η ακόλουθη σύνταξη μπορεί να χρησιμοποιηθεί για το σκοπό αυτό:
$λαβή–C όνομα αρχείου συμβολοσειράςΑυτό είναι το δείγμα αρχείου μας μοιάζει με:
Ακολουθεί ένα παράδειγμα εντολής που επέστρεψε τον αριθμό των φορών της λέξης αρχείο εμφανίστηκε σε ένα όνομα με όνομα testfile3 Το
Αντεστραμμένη αναζήτηση
Μερικές φορές, θέλετε να πραγματοποιήσετε μια αντίστροφη αναζήτηση που εμφανίζει όλες τις γραμμές εκτός από αυτές που ταιριάζουν με την είσοδο. Για να το κάνετε αυτό, απλώς χρησιμοποιήστε τη σημαία –v ακολουθούμενη από grep:
$λαβή–Όνομα αρχείου συμβολοσειράςΓια παράδειγμα, για να εμφανίσετε όλες τις γραμμές σε ένα αρχείο testfile3 που δεν περιέχουν τη λέξη λογαριασμός σε αυτά, χρησιμοποιήσαμε την ακόλουθη εντολή:
$λαβή–V λογαριασμός testfile3Χρήση του Grep με άλλες εντολές
Το Grep μπορεί επίσης να χρησιμοποιηθεί για να φιλτράρει το απαιτούμενο αποτέλεσμα από διαφορετικές εντολές εξόδου. Για παράδειγμα, από το apt –εγκατεστημένη λίστα εντολή εξόδου, θέλετε να βρείτε μόνο τα πακέτα που εγκαταστάθηκαν αυτόματα, μπορείτε να φιλτράρετε το αποτέλεσμα χρησιμοποιώντας grep ως εξής:
$κατάλληλος-εγκατεστημένολίστα| λαβήαυτόματο
Ομοίως, το lscpu παρέχει λεπτομερείς πληροφορίες σχετικά με την CPU. Εάν ενδιαφέρεστε μόνο για τις πληροφορίες σχετικά με την αρχιτεκτονική της CPU, μπορείτε να τις φιλτράρετε χρησιμοποιώντας την ακόλουθη εντολή:
$lscpu| λαβήΑρχιτεκτονικήΣε αυτό το άρθρο, έχουμε περιγράψει μερικά παραδείγματα που θα σας βοηθήσουν να κατανοήσετε τις εντολές grep και τη χρήση του σε διαφορετικές συνθήκες. Η ισχυρή πρόσφυση στην εντολή grep μπορεί να εξοικονομήσει πολύ χρόνο εάν χρειαστεί να εξετάσετε μεγάλες ρυθμίσεις παραμέτρων ή να καταγράψετε αρχεία και να ξεφυλλίσετε χρήσιμες πληροφορίες μέσω αυτών.