Το **grep** (**G**lobal **R**egular **E**xpression **P**rint) (Καθολική Εκτύπωση Κανονικής Έκφρασης) είναι ένα πρόγραμμα βοήθημα της γραμμής εντολών που αρχικά δημιουργήθηκε για το λειτουργικό σύστημα Unix. Όταν δοθεί ένας κατάλογος αρχείων ή τυπικής εισόδου προς είσοδο, το grep αναζητά γραμμές κειμένου που ταιριάζουν σε μια ή περισσότερες κανονικές εκφράσεις και δίνει σαν έξοδο μόνο τις γραμμές που ταιριάζουν.

Χρήση και λειτουργία
--------------------

Το όνομα του προγράμματος προέρχεται από την εντολή που χρησιμοποιείται στον επεξεργαστή κειμένου του Unix ed προκειμένου να πετύχουμε μια παρόμοια λειτουργία.

```
 g/re/p
```

Αυτή η εντολή ψάχνει ένα αρχείο (g)lobally - καθολικά (δηλαδή το ψάχνει όλο) για γραμμές που ταιριάζουν σε μια δοσμένη (r)egular (e)xpression *κανονική έκφραση*, και (p)rints τις τυπώνει.

Υπάρχουν πολλές διαθέσιμες επιλογές-ορίσματα της γραμμής εντολών που μπορούν να χρησιμοποιηθούν για να το τροποποιήσουν την προκαθορισμένη λειτουργία της εντολής, όπως για να εμφανιστούν οι γραμμές που δεν ταιριάζουν στην κανονική έκφραση, για να ψάξει ή να αποκλείσει μερικά αρχεία προς αναζήτηση, για να *σχολιαστεί* η έξοδος κτλ. Υπάρχουν επίσης πολλές σύγχρονες υλοποιήσεις του κλασικού grep του Unix με μοναδικά χαρακτηριστικά.

Ένα απλό παράδειγμα χρήσης του grep:

```
 grep apple fruitlist.txt
```

Το grep θα επέστρεφε σε αυτή την περίπτωση όλες τις γραμμές του αρχείου fruitlist.txt που θα περιείχαν τουλάχιστον μια εμφάνιση της λέξης 'apple'. Δεν θα επέστρεφε σαν έξοδο γραμμές που περιέχουν τη λέξη 'Apple' (κεφαλαίο A) γιατι η προκαθορισμένη λειτουργία του είναι ευαίσθητη στα κεφαλαία-μικρά της γραμματοσειράς. Όμως, όπως οι περισσότερες εντολές του Unix, μπορεί να δεχθεί σημαίες που μπορουν να αλλάξουν αυτή τη λειτουργία. π.χ.

```
 grep -i apple fruitlist.txt
```

Αυτή η εντολή θα επέστρεφε γραμμές με τις λέξεις 'apple', 'Apple', 'apPLE', ή οποιαδήποτε άλλη πιθανή ανάμιξη κεφαλαίων και μικρών.

Η επιλογή -e μπορεί να χρησομοποιηθεί για να δηλώσουμε πολλαπλές κανονικές εκφράσεις για προς ταίριασμα. Επίσης, η επιλογή -v χρησιμοποιείται για να αντιστρέψουμε το ταίριασμα και έτσι να αποκλείσουμε τις γραμμές κειμένου που ταιριάζουν με την κανονική έκφραση.

Παραλλαγές
----------

Υπάρχουν πολλές παραλλαγές του grep, π.χ. agrep *approximate grep* (προσεγγιστικό grep) που διευκολύνει την θολή αναζήτηση συμβολοσειρών, το **fgrep** για fixed (σταθερά) πρότυπα αναζήτησης, και **egrep** για αναζητήσεις που περιλαμβάνουν κανονικές εκφράσεις με περισσότερο πολύπλοκο συντακτικό. Τα fgrep και egrep είναι συνήθως το ίδιο πρόγραμμα **grep**, το οποίο μπορεί να συμπεριφερθεί σαν αυτά ανάλογα με το όνομα με το οποίο θα κληθεί.

Δείτε επίσης
------------

* Boyer – Moore αλγόριθμος αναζήτησης συμβολοσειρών
* Κατάλογος βοηθημάτων του Unix

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| 

| π • σ • ε
Προγράμματα γραμμής εντολών και ενσωματωμένα του Unix και (άλλα) |
| --- |
|  |
| Σύστημα αρχείων | 
* cat
* cd
* chmod
* chown
* chgrp
* cksum
* cmp
* cp
* du
* df
* file
* fsck
* fuser
* ln
* ls
* lsattr
* lsof
* mkdir
* mount
* mv
* pwd
* rm
* rmdir
* split
* touch
 |
|  |
| Διεργασίες | 
* at
* bg
* chroot

cron
exit
fg
kill
killall
nice
pgrep
pidof
pkill
ps
pstree
sleep
time
top
wait
watch |
|  |
| Περιβάλλον χρήστη | 
* env
* finger
* id
* logname
* mesg
* passwd
* su
* sudo
* uname
* uptime
* w
* wall
* who
* whoami
* write
 |
|  |
| Επεξεργασία κειμένου | 
* awk
* comm
* cut
* ed
* ex
* fmt
* head
* iconv
* join
* less
* more
* paste
* sed
* sort
* tac
* tail
* tr
* uniq
* wc
* xargs
 |
|  |
| Προγραμματισμός Κελύφους | 
* .
* alias
* basename
* dirname
* echo
* expr
* false
* printf
* test
* true
* unset
 |
|  |
| Δικτύωση | 
* inetd
* netstat
* nslookup
* ping
* rlogin
* nc
* traceroute
 |
|  |
| Αναζήτηση | 
* find
* grep
* strings
 |
|  |
| Διάφορα | 
* apropos
* bc
* cal
* clear
* date
* dd
* lp
* man
* nl
* size
* tee
* yes
 |
|  |
| 
Κατηγορία **Κατηγορία** |

 |