Η γενική εκτύπωση κανονικής έκφρασης ή απλά grep είναι μία από τις πιο ευπροσάρμοστες και κοινές εντολές σε συστήματα Unix και Linux. Η εντολή αναζητά ένα ή περισσότερα αρχεία εισόδου και αντίστοιχες γραμμές προτύπου. Ως αποτέλεσμα, έχετε μια τυπική έξοδο με τις αντίστοιχες γραμμές.
Αν δεν καθορίσετε ένα αρχείο, το grep χρησιμοποιεί την τυπική είσοδο για τις ανάγνωσεις και πιθανότατα θα είναι η έξοδος μιας άλλης εντολής. Σε γενικές γραμμές, το grep διαθέτει απλή σύνταξη αν το χρησιμοποιείτε με ή χωρίς το όνομα του αρχείου.
Αυτό το άρθρο σάς παρέχει μια γρήγορη επισκόπηση της σύνταξης grep και κάποιες βασικές εντολές που μπορείτε να χρησιμοποιήσετε με ή χωρίς το όνομα του αρχείου.
Πριν ξεκινήσεις
Όλες οι εντολές grep ακολουθούν την ίδια σύνταξη και κάθε παράμετρος έχει μια συγκεκριμένη λειτουργία. Εδώ είναι η γραμμή δειγματοληψίας:
grep PATTERN
Μπορείτε να χρησιμοποιήσετε έναν αριθμό OPTIONS στο grep για να ελέγξετε την έξοδο εντολών και ο αριθμός ξεκινά από το μηδέν. Το PATTERN υποδεικνύει το μοτίβο αναζήτησης που θέλετε να εφαρμόσετε. Όσο για το ΑΡΧΕΙΟ, εδώ πηγαίνει το όνομα του αρχείου ή τα ονόματα, αλλά η παράμετρος μπορεί να οριστεί στο μηδέν.
Αναζήτηση γραμμής στην έξοδο εντολών
Όπως υποδεικνύεται, δεν χρειάζεται να χρησιμοποιείτε συγκεκριμένα αρχεία εισόδου. Η έξοδος μιας άλλης εντολής μπορεί να χρησιμοποιηθεί στο grep για να πάρει γραμμές που ταιριάζουν ακριβώς με ένα μοτίβο. Αυτό μπορεί να χρησιμοποιηθεί για να καθορίσει ποιες διαδικασίες είναι ενεργές στο σύστημα. Αυτή είναι η συντακτική εντολή δείγματος:
$ ps -ef | grep www-data
Η έξοδος που παίρνετε πρέπει να δείχνει κάτι τέτοιο:
www-στοιχεία 18247 12675 4 16:00; 00:00:00 php-fpm: πισίνα www
root 18272 17714 0 16:00 pts / 0 00:00:00 grep -color = auto -exclude-dir = .bzr -exclude-dir = CVS -exclude-dir = .git -exclude-dir = .hg-exclude- dir = .svn www-δεδομένα
www-δεδομένα 31147 12770 0 Οκτώβριος 22; 00:05:51 nginx: διαδικασία εργασίας
www-δεδομένα 31148 12770 0 Οκτώβριος 22; 00:00:00 nginx: διαδικασία διαχειριστή cache
Υπάρχει ένας τρόπος να αποκλείσετε τη γραμμή εντολών που περιέχει τις διαδικασίες grep. Για αυτό, πρέπει να χρησιμοποιήσετε το $ ps -ef | grep www-δεδομένα | grep -v grep εντολή.
Grep Αναζήτηση λέξεων
Μπορείτε να χρησιμοποιήσετε τις εντολές grep για να αναζητήσετε συγκεκριμένες λέξεις στα αρχεία του συστήματός σας. Στην πραγματικότητα, δεν χρειάζεται να πληκτρολογείτε μια ολόκληρη λέξη. Μπορείτε να χρησιμοποιήσετε απλά gnu, για παράδειγμα, και η εντολή εξάγει όλες τις λέξεις που έχουν αυτά τα τρία γράμματα σε αυτά. Η σύνταξη της εντολής είναι:
$ grep gnu / usr / share / λέξεις
Αφού εκτελέσετε την εντολή, η έξοδος σας θα πρέπει να φαίνεται κάπως έτσι:
cygnus
αντιλόπης της Αφρικής
μεσοβασιλεία
lgnu9d
lignum
μεγάλη φιάλη οίνου
magnuson
σφαγνός
wingnut
Από την άλλη πλευρά, μπορείτε να αναζητήσετε μόνο αυτή τη συγκεκριμένη λέξη ή σειρά γραμμάτων και να αποκλείσετε όλα τα υπόλοιπα. Για αυτό, πρέπει να προσθέσετε -w ή -word - regexp στη σύνταξη. Σε αυτή την περίπτωση, η εντολή παράδειγμα μοιάζει με αυτή - $ grep -w gnu / usr / share / words .
Σημείωση: Για λόγους γραμματικής, μερικές από τις εντολές έχουν τελειώσει στο τέλος. Δεν χρειάζεται αυτό το σημείο στίξης για grep. Εξαίρεση όταν αντιγράφετε / επικολλάτε την εντολή.
Είναι η ευαίσθητη περίπτωση Grep;
Όλες οι εντολές grep έχουν προκαθορισμένη διάκριση πεζών-κεφαλαίων. Αυτό σημαίνει ότι η χρήση των πεζών και κεφαλαίων χαρακτήρων κάνει τη διαφορά στην ίδια την εντολή. Ωστόσο, μπορείτε να προσθέσετε - i ( - ignore - case ) στη γραμμή εντολών και να επιτρέψετε στο σύστημα να αναζητήσει τόσο τις λέξεις-κλειδιά όσο και τις μικρές λέξεις-κλειδιά.
Για παράδειγμα, η εντολή εισόδου μπορεί να μοιάζει με αυτή την τιμή $ grep -i Zebra / usr / share / words . Επιτρέπει στην έξοδο να ταιριάζει με οποιονδήποτε συνδυασμό κεφαλαίων και κεφαλαίων όταν αναζητά ζέβρα.
Αριθμοί γραμμών
Χρησιμοποιήστε την επιλογή -line-number ή απλά -n για να προσδιορίσετε τον αριθμό των γραμμών με μια συμβολοσειρά που ταιριάζει με ένα συγκεκριμένο μοτίβο αναζήτησης. Ως αποτέλεσμα, έχετε μια τυπική έξοδο με έναν αριθμό γραμμής μπροστά της.
Η ακριβής εντολή μπορεί να φαίνεται ως εξής: $ grep -n 10000 / etc / services . Κατά την εκτέλεση, η έξοδος παρέχει όλες τις αντιστοιχίες που βρίσκει σε 10000 γραμμές. Ελέγξτε το παρακάτω δείγμα:
10423: ndmp 10000 / tcp
10424: ndmp 10000 / udp
Αρχεία σε φακέλους
Μπορείτε να τοποθετήσετε έναν αστερίσκο πίσω από μια εντολή grep αντί για ένα όνομα αρχείου. Χρησιμοποιώντας ξανά τα κριτήρια gnu, η εντολή μοιάζει με αυτή τη $ grep gnu * και η έξοδος παραθέτει τα αρχεία που περιέχουν gnu in. Είναι σημαντικό να σημειωθεί ότι αυτό το είδος εντολής επιστρέφει μια γραμμή.
Σημείωση: Με grep, μια γραμμή αναφέρεται σε μια ακολουθία χαρακτήρων που τρέχουν μέχρι ένα καθορισμένο διάλειμμα. Εάν δεν βελτιώσετε την αναζήτηση, η έξοδος μπορεί να περιέχει ολόκληρες παραγράφους πληροφοριών.
Πάρτε το επόμενο βήμα με Grep
Αυτός ο οδηγός απλά γρατζουνίζει την επιφάνεια του τι μπορείτε να κάνετε με grep. Ίσως χρειαστεί λίγος χρόνος για να πάρεις όλες τις πιθανότητες και τελειώνει, αλλά η σύνταξη ακολουθεί μια αρκετά απλή αρχή. Και με κάποια πρακτική, θα μπορείτε να τελειοποιήσετε τις αναζητήσεις σας στην τελειότητα, με ή χωρίς το όνομα του αρχείου.
