Κατανόηση της εντολής grep με πρακτικά παραδείγματα για εύκολο φιλτράρισμα και εμφάνιση του περιεχομένου του αρχείου
GREP
σημαίνει «Παγκόσμια εκτύπωση τυπικής έκφρασης». Είναι ένα χρήσιμο βοηθητικό πρόγραμμα γραμμής εντολών που παρέχεται από το Linux, για την αναζήτηση της γραμμής κειμένου που ταιριάζει με το μοτίβο που παρέχει ο χρήστης.
grep
παίρνει την είσοδο από τον χρήστη με τη μορφή συμβολοσειρών ή λέξεων που ο χρήστης επιθυμεί να αναζητήσει σε ένα συγκεκριμένο αρχείο. Στη συνέχεια, η εντολή ελέγχει το αρχείο που έχει καθορίσει ο χρήστης για αυτό το μοτίβο και, στη συνέχεια, επιστρέφει τις γραμμές που ταιριάζουν με το μοτίβο που παρέχεται.
Κάνει εξαιρετική δουλειά φιλτράροντας το περιεχόμενο ενός αρχείου, διευκολύνοντας έτσι την αναζήτηση συγκεκριμένου περιεχομένου σε μεμονωμένα ή πολλαπλά αρχεία ταυτόχρονα.
Σε αυτό το άρθρο, ας εξετάσουμε τη λειτουργία του grep
εντολή με μερικά πρακτικά παραδείγματα αναλυτικά.
Διαθέσιμες επιλογές με grep
εντολή
Αυτές είναι μερικές από τις βασικές επιλογές που θα χρησιμοποιείτε συχνά με το grep
εντολή.
Επιλογή | Περιγραφή |
-Εγώ | Για αναζήτηση χωρίς διάκριση πεζών-κεφαλαίων |
-r | Για αναδρομική αναζήτηση για όλα τα αρχεία στον καθορισμένο κατάλογο και τους υποκαταλόγους του |
-ντο | Για να εμφανιστεί ο συνολικός αριθμός των φορών που εμφανίζεται μια συμβολοσειρά |
-v | Για να εμφανίσετε τις γραμμές που δεν ταιριάζουν |
-w | Φίλτρο για τη συγκεκριμένη λέξη που χρησιμοποιείται ξεχωριστά |
Χρησιμοποιώντας το grep
εντολή
grep
η εντολή χρησιμοποιείται συνήθως με το σωλήνα (|
) χρησιμότητα. Μπορεί να εφαρμοστεί με το shell pipe όταν θέλετε να το χρησιμοποιήσετε με κάποιες άλλες εντολές Linux. Παρόλο, grep
μπορεί επίσης να χρησιμοποιηθεί μεμονωμένα χωρίς το σωλήνα (|
) χρησιμότητα.
Ας δούμε μερικές από τις βασικές συντακτικές του grep
εντολή με και χωρίς το βοηθητικό πρόγραμμα σωλήνα.
Επιτρέψτε μου πρώτα να σας δείξω το δείγμα αρχείου κειμένου που θα χρησιμοποιήσω για να το επεξηγήσω grep
εντολή.
Η ΙΝΔΙΑ ΕΙΝΑΙ ΜΙΑ ΟΜΟΡΦΗ ΧΩΡΑ ΑΓΑΠΑΣ ΤΗΣ ΕΙΡΗΝΗΣ. Η Ινδία βασίζεται σε τρεις πυλώνες νομοθετικής, εκτελεστικής και δικαστικής εξουσίας. Η Ινδία είναι μια όμορφη χώρα που αγαπούν την ειρήνη. Η Ινδία νοιάζεται για τους ανθρώπους καθώς ο πόρος της είναι οι καρτεσιανές συντεταγμένες σημασία όλων των καρτεσιανών συντεταγμένων. Ακολουθούν δύο κενές γραμμές. Η χρήση ενός καροτσιού είναι ένα κοινό θέαμα στο χωριό για τις αγροτικές δουλειές. Αυτό είναι το τέλος του δείγματος αρχείου.
grep
χρησιμοποιείται με σωλήνα ( | )χρησιμότητα
grep
Η εντολή μπορεί να εφαρμοστεί μαζί με άλλες εντολές Linux χρησιμοποιώντας τους σωλήνες φλοιού. Όπως, χρησιμοποιώντας το Γάτα
εντολή για εμφάνιση του περιεχομένου του αρχείου αλλά ταυτόχρονα διοχέτευση της εξόδου χρησιμοποιώντας το grep
εντολή για εμφάνιση μόνο του περιεχομένου που θέλετε να δείτε. Αυτό θα γίνει πιο ξεκάθαρο όταν περάσουμε από το παράδειγμα.
Σύνταξη:
[εντολή] | grep [χορδή]
Παράδειγμα:
δείγμα γάτας.txt | grep νομοθετικό σώμα
Εδώ, έχω χρησιμοποιήσει το Γάτα
εντολή για εμφάνιση ορισμένων γραμμών από το αρχείο «sample.txt». Πρέπει να εμφανίζονται μόνο εκείνες οι γραμμές που περιέχουν τη λέξη «νομοθετικό σώμα» και αγνοούν τις υπόλοιπες γραμμές.
Παραγωγή:
gaurav@ubuntu:~/χώρος εργασίας$ cat sample.txt | Το grep νομοθετικό σώμα της Ινδίας βασίζεται σε τρεις πυλώνες νομοθετικής, εκτελεστικής και δικαστικής εξουσίας. gaurav@ubuntu:~/χώρος εργασίας$
grep
χρησιμοποιείται χωρίς σωλήνα ( |)χρησιμότητα
grep
μπορεί να χρησιμοποιηθεί ακόμη και απευθείας ως μεμονωμένη εντολή χωρίς τη χρήση του σωλήνα ( |
) χρησιμότητα.
Σύνταξη:
grep [string_to_be_searched] [όνομα αρχείου]
Παράδειγμα:
grep India sample.txt
Παραγωγή:
Η Ινδία είναι μια όμορφη χώρα που αγαπούν την ειρήνη. Η Ινδία νοιάζεται για τους ανθρώπους ως πόρος της
Έτσι, έχω χρησιμοποιήσει το grep
εντολή απευθείας για να φιλτράρετε τις γραμμές που περιέχουν τη συμβολοσειρά «Ινδία» από το αρχείο κειμένου «sample.txt».
Αναζήτηση χωρίς διάκριση πεζών-κεφαλαίων με χρήση grep
εντολή
Το Linux είναι πολύ προσεκτικό σχετικά με την ευαισθησία πεζών-κεφαλαίων όταν ενεργοποιούμε τις εντολές στο τερματικό. Αυτό απαιτεί από τον χρήστη να είναι προσεκτικός σχετικά με την περίπτωση της συμβολοσειράς που έχει τοποθετηθεί στην εντολή.
Ας το δούμε αυτό μέσα από ένα παράδειγμα.
grep ειρήνη δείγμα.txt
Σε αυτήν την περίπτωση, δεν θα λάβουμε έξοδο, καθώς δεν υπάρχει λέξη ως "ειρήνη" στο δείγμα αρχείου. Έχουμε τη λέξη «Ειρήνη» με κεφαλαίο «Π». Η λέξη είναι η ίδια αλλά όταν χρησιμοποιούμε το grep
εντολή χωρίς καμία επιλογή, αναζητά την ακριβή αντιστοίχιση στο αρχείο, αγνοώντας τυχόν αλλαγές στα πεζά γράμματα.
Για να αποφύγετε αυτήν την ασάφεια, μπορείτε απλά να χρησιμοποιήσετε το -Εγώ
επιλογή που λέει κυριολεκτικά το grep
εντολή "Ξεχάστε την περίπτωση που έχω βάλει τη συμβολοσειρά και απλώς αναζητήστε όλα τα μοτίβα που ταιριάζουν στο αρχείο."
Σύνταξη:
grep -i [string] [όνομα αρχείου]
Παράδειγμα:
grep -i ειρήνη δείγμα.txt
Παραγωγή:
Η ΙΝΔΙΑ ΕΙΝΑΙ ΜΙΑ ΟΜΟΡΦΗ ΧΩΡΑ ΑΓΑΠΑΣ ΤΗΣ ΕΙΡΗΝΗΣ. Η Ινδία είναι μια όμορφη χώρα που αγαπούν την ειρήνη.
Όλες οι γραμμές που ταιριάζουν εμφανίζονται ανεξάρτητα από την περίπτωση στην οποία βρίσκεται η συμβολοσειρά που ταιριάζει.
Αναδρομική αναζήτηση χρησιμοποιώντας grep
εντολή
ο -r
Η επιλογή θα αναζητήσει όλα τα αρχεία σε έναν κατάλογο και όλους τους υποκαταλόγους του που ταιριάζει με το μοτίβο συμβολοσειράς που παρέχεται από τον χρήστη στην εντολή.
Σύνταξη:
grep -i -r [string] [file_path]
Παράδειγμα:
grep -i -r tomcat /home/gaurav/χώρος εργασίας
Η συμβολοσειρά εδώ είναι "tomcat" και θα αναζητηθεί στον χώρο εργασίας του καταλόγου. Όλοι οι υποκατάλογοι και τα αρχεία στον κατάλογο «χώρος εργασίας» θα σαρωθούν επίσης για να ταιριάζουν με το μοτίβο συμβολοσειράς που παρέχεται.
Παραγωγή:
./context_log.policy:// catalina.policy - Δικαιώματα πολιτικής ασφαλείας για Tomcat 7 ./context_log.policy:// Σημείωση: Εάν το tomcat-juli.jar βρίσκεται στο ${catalina.base} και όχι στο ${catalina.home }, ./context_log.policy:// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..} ./context_log.policy:grant codeBase "file:${catalina.home }/bin/tomcat-juli.jar" { ./context_log.policy: permission java.lang.RuntimePermission "accessClassInPackage.org.apache.tomcat.websocket.server"; ./context.xml: ./catalina.properties:# - Tomcat Bootstrap JAR ./catalina.properties:# - Tomcat API JARs ./catalina.properties:# - Tomcat JARs ./catalina.properties:# - Κοινά μη-Tomcat JARs ./catalina.properties:org.apache.catalina.startup.TldConfig.jarsToSkip=tomcat7-websocket.jar ./catalina.properties:tomcat.util.buf.StringCache.byte.enabled=true ./catalina#.properties tomcat.util.buf.StringCache.char.enabled=true ./catalina.properties:#tomcat.util.buf.StringCache.trainThreshold=500000 ./catalina.properties:#tomcat.util.buf.StringCache.0000.=5 /server.xml: pathname="conf/tomcat-users.xml" /> ./server.xml:
ΣΗΜΕΙΩΣΗ: Κατά τη χρήση του -r
επιλογή με το grep
εντολή πρέπει να δώσουμε τη διαδρομή του αρχείου και όχι το όνομα αρχείου
Αναζήτηση ολόκληρων λέξεων μόνο με grep
εντολή
Πολλές φορές η περίπτωση είναι ότι θα ψάχνετε για μία λέξη αλλά θα καταλήξετε να συμπληρώσετε το τερματικό σας με τις αντίστοιχες γραμμές που περιέχουν την αντίστοιχη λέξη σας αλλά όχι ως μεμονωμένη λέξη. Μπορεί να δείτε τις γραμμές που περιέχουν μερικές λέξεις των οποίων το υποτμήμα είναι η συμβολοσειρά που έχετε εισαγάγει.
Μπερδευτείτε με αυτό; Μην ανησυχείτε, είναι πολύ πιο εύκολο να το καταλάβετε μόλις λάβετε το παράδειγμα.
Παράδειγμα:
Εδώ, θέλω να αναζητήσω μια μεμονωμένη λέξη "καλάθι" και να εμφανίσω όλες τις γραμμές που αντιστοιχούν σε αυτήν τη λέξη στο αρχείο "sample.txt".
grep -i cart sample.txt
Παραγωγή:
Καρτεσιανές συντεταγμένες σημασία όλων των καρτεσιανών συντεταγμένων. Η χρήση καροτσιού είναι συνηθισμένο θέαμα στο χωριό για τις αγροτικές δουλειές Το κάρο χάθηκε καθώς το αγόρι το άφησε χαλαρό.
Στην έξοδο, μπορείτε να παρατηρήσετε ότι η λέξη "Cartesian" περιέχει επίσης τη λέξη "cart" και, ως εκ τούτου, οι γραμμές που περιέχουν τη λέξη "Cartesian" εμφανίζονται επίσης, παρόλο που δεν θέλουμε να εμφανίζονται.
Μπορείτε να χρησιμοποιήσετε το -w
επιλογή με το grep
εντολή για την επίλυση αυτής της ασάφειας.
Σύνταξη:
grep -i -w [string] [όνομα αρχείου]
Παράδειγμα:
grep -i -w cart sample.txt
Παραγωγή:
Η χρήση ενός καροτσιού είναι ένα κοινό θέαμα στο χωριό για τις αγροτικές δουλειές. Το καρότσι χάθηκε καθώς το αγόρι το άφησε χαλαρό.
Τώρα, όταν έχετε χρησιμοποιήσει το -w
επιλογή με grep
θα λάβετε μόνο τις γραμμές στις οποίες χρησιμοποιείται η λέξη «καλάθι» ως σύνολο.
Αντεστραμμένη αναζήτηση με χρήση grep
εντολή
grep
Η εντολή μπορεί επίσης να χρησιμοποιηθεί με αντίστροφο τρόπο. Μπορούμε να χρησιμοποιήσουμε το grep
εντολή αντίθετα κρύβοντας τις γραμμές που ταιριάζουν και εμφανίζοντας μόνο τις γραμμές όπου δεν βρέθηκε η αντιστοίχιση. Μπορείτε να το κάνετε αυτό χρησιμοποιώντας το -v
επιλογή με το grep
εντολή.
Σύνταξη:
grep -i -v [string] [όνομα αρχείου]
Παράδειγμα:
grep -i -v πόρος sample.txt
Παραγωγή:
Η ΙΝΔΙΑ ΕΙΝΑΙ ΜΙΑ ΟΜΟΡΦΗ ΧΩΡΑ ΑΓΑΠΑΣ ΤΗΣ ΕΙΡΗΝΗΣ. Η Ινδία βασίζεται σε τρεις πυλώνες νομοθετικής, εκτελεστικής και δικαστικής εξουσίας. Η Ινδία είναι μια όμορφη χώρα που αγαπούν την ειρήνη. καρτεσιανές συντεταγμένες σημασία όλων των καρτεσιανών συντεταγμένων. Η χρήση ενός καροτσιού είναι ένα κοινό θέαμα στο χωριό για τις αγροτικές δουλειές. Αυτό είναι το τέλος του δείγματος αρχείου.
Στην έξοδο, όλες οι άλλες γραμμές εμφανίζονται εκτός από τη γραμμή που περιέχει τη λέξη «πόρος».
Καταμέτρηση εμφανίσεων ταιριάσματος συμβολοσειράς
Η έξοδος του grep
Η εντολή είναι συνήθως πολύ μεγάλη εάν τα δεδομένα στο αρχείο είναι εκτεταμένα. Όσο περισσότεροι είναι οι αγώνες, τόσο μεγαλύτερες είναι οι έξοδοι του grep
εντολή. Το Linux σας παρέχει μια επιλογή όπου μπορείτε να εμφανίσετε τον αριθμό των εμφανίσεων του αγώνα.
Σύνταξη:
grep -i -c [string] [όνομα αρχείου]
Παράδειγμα:
grep -i -c india sample.txt
Παραγωγή:
gaurav@ubuntu:~/workspace$ grep -i -c india sample.txt 4 gaurav@ubuntu:~/workspace$
Εδώ, η έξοδος είναι ένας αριθμός που είναι ο αριθμός των εμφανίσεων της λέξης "Ινδία" στο αρχείο sample.txt.
ΣΗΜΕΙΩΣΗ: Έχω χρησιμοποιήσει το -Εγώ
επιλογή σε κάθε παράδειγμα για να είστε ασφαλείς με το θέμα ευαισθησίας πεζών-κεφαλαίων. Σε περίπτωση που είστε σίγουροι για την περίπτωση της λέξης που αναζητάτε, τότε μπορείτε με ασφάλεια να παραλείψετε το -Εγώ
επιλογή.
συμπέρασμα
Έχουμε μάθει τις βασικές χρήσεις του grep
εντολή στα συστήματα Linux σε αυτό το σεμινάριο. Μάθαμε επίσης να προβάλλουμε ποικίλο περιεχόμενο που ταιριάζει καλύτερα στις απαιτήσεις μας και να μην γεμίζουμε το τερματικό με πολλές γραμμές. grep
Η εντολή σίγουρα θα εξοικονομήσει χρόνο εάν χρησιμοποιηθεί για τη σάρωση μεγάλων συνόλων δεδομένων.