Grep Command στο Linux

Grep Command Linux



Η εντολή Grep (παγκόσμια κανονική εκτύπωση έκφρασης) είναι το πιο ισχυρό και τακτικά χρησιμοποιούμενο βοηθητικό πρόγραμμα γραμμής εντολών Linux. Χρησιμοποιώντας το Grep, μπορείτε να αναζητήσετε χρήσιμες πληροφορίες καθορίζοντας κριτήρια αναζήτησης. Αναζητά ένα συγκεκριμένο μοτίβο έκφρασης σε ένα καθορισμένο αρχείο. Όταν βρίσκει ένα ταίριασμα, εκτυπώνει όλες τις γραμμές ενός αρχείου που ταιριάζουν με το καθορισμένο μοτίβο. Είναι βολικό όταν πρέπει να φιλτράρετε μέσα από μεγάλα αρχεία καταγραφής.

Σε αυτό το άρθρο, θα εξηγήσουμε τη χρήση του βοηθητικού προγράμματος 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 μπορεί να εξοικονομήσει πολύ χρόνο εάν χρειαστεί να εξετάσετε μεγάλες ρυθμίσεις παραμέτρων ή να καταγράψετε αρχεία και να ξεφυλλίσετε χρήσιμες πληροφορίες μέσω αυτών.