Προς το περιεχόμενο

Τι κανει το grep command?


Isle

Προτεινόμενες αναρτήσεις

Δημοσ.

Νομιζω οτι ο τιτλος τα λεει ολα...

Διαβαζα σε ενα HOWTO και εχω φτασει σε αυτην αλλα δεν καταλαβαινω.Μεχρι εκει εχω μαθει τις πιο απλες οπως ls, find, κτλ αλλα αυτην δεν μπορω να την καταλαβω.

Δημοσ.

Η grep χρησιμοποιειται συνηθως σε συνδυασμο με αλλες εντολες και χρησιμευει για να εντοπιζει καποια αλληλουχια χαρακτηρων μεσα στα αποτελεσματα της αλλης εντολης. Για παραδειγμα εστω οτι ειμαστε μεσα σε ενα φακελο που εχει 3 αρχεια a,b,c αν δωσεις "ls" το αποτελεσμα θα ειναι a,b,c ενω αν δωσεις "ls | grep a" το αποτελεσμα θα ειναι a. Ο χαρακτηρας | χρησιμοποιειται για να στελνεις το output μιας εντολης στο input μιας αλλης. Γενικα η grep ειναι πολυ χρησιμη εντολη με παρα πολλες παραμετρους και δυνατοτητες. Αυτα εν συντομια.

Δημοσ.

Φοβαμαι πως δεν καταλαβαινω.Μπορεις να μου εξηγησεις σε παρακαλω χωρις να εμπλεξεις και τα pipes γιατι γινεται πιο δυσκολο.

Δημοσ.

Ta diabazeis apo biblio h exeis kai to pc anoixto? An nai panta mporeis na grapseis:

man <command> (sthn periptwsh sou man grep) gia na deis th selida tou manual. 9 stis 10 9a breis e3hghsh se auto pou psaxneis.

Δημοσ.

Τα man pages ειναι πολυπλοκα και πιο δυσκολα και απο το βιβλιο που διαβαζω(που σχετικα ειναι απλο).Το βιβλιο, μαλλον αρχειο pdf μπορεις να πεις, λεγεται intro-linux και το βρηκα στο tldp.org.Η εξηγηση για την εντολη ειναι η εξης:

 

A simple but powerful program, grep is used for filtering input lines and returning certain patterns to the

output. There are literally thousands of applications for the grep program. In the example below, jerry uses

grep to see how he did the thing with find:

 

jerry:~> grep −a find .bash_history

find . −name userinfo

man find

find ../ −name common.cfg

 

Δυστυχως, δεν καταλαβαινω.

Δημοσ.

Κάνε το παρακάτω σα παράδειγμα μήπως βοηθήσει.

Άνοιξε ένα αρχείο, γράψε ενα κειμενάκι αλλάζοντας γραμμές και μετά γράψε σε κονσόλα:

(έστω οτι το αρχείο σου λέγετε test και ότι θες να βρείς την λέξη and):

>
grep and test

 

Η εντολή αυτή θα σου επιστρέψει όλες τις γραμμές του κειμένου σου που έχουν μέσα τη λέξη and.

Κάνε και ένα grep --help να δείς και τι παραμέτρους μπορεις να βάλεις.

Δημοσ.

Κοίτα, την grep τη χρησιμοποιείς για να εντοπίσεις μια λέξη (ή λέξεις) μέσα σε ένα αρχείο. Σαν αποτέλεσμα σου δίνει ΤΙΣ ΓΡΑΜΜΕΣ ΤΟΥ κειμένου που περιέχουν τη λέξη που ψάχνεις.

 

To παραπάνω παράδειγμα είναι πολύ μπερδεψιάρικο και έτσι όπως το πέταξες ξεκάρφωτο ψάρωσα λίγο.

Να αναλύσουμε το παράδειγμα.

>grep find .bash_history

 

Βρες το "find" μέσα στο αρχείο ".bash_history"

Προφανώς το .bash_history κρατάει όλες τις εντολές που δίνεις σε κονσόλα.

Δώσε

$ less .bash_history

για να το διαπιστώσεις με τα μάτια σου

 

Το αποτέλεσμα της παραπάνω εντολής είναι το

>find . −name userinfo
man find
find ../ −name common.cfg

 

που προφανώς είναι εντολές που έχει δώσει ο jerry στο παρελθόν και περιέχουν τη λέξη find μέσα.

 

Για να σου δώσω ένα πιο κατανοητό παράδειγμα, φαντάσου πως έχεις ένα αρχείο που έχει μέσα το τηλεφωνικό σου κατάλογο.

Σε κάθε γραμμή έχεις όνομα, τηλέφωνο και διεύθυνση.

Έστω το αρχείο phonebook.text

 

Με

grep phonebook Γιώργος

θα έχεις σαν αποτέλεσμα όλες τις γραμμές που περιέχουν το όνομα αυτό, τη μια κάτω από την άλλη.

 

Είναι πολύ χρήσιμη όταν χρησιμοποιείται σε συνδυασμό με pipes ενώ όλα τα λεφτά είναι τα patterns που μπορείς να δηλώσεις. Θα ψάξω να βρω που αναφέρονται όλα να στο στείλω.

 

YΓ1: το βρήκα

τα patterns λέγονται "regular expressions"

http://sitescooper.org/tao_regexps.html

YΓ2: Μάθε να χρησιμοποιείς τη man

Είναι όλα θέμα ψαρώματος. Μέτα από λίγο θα συνηθίσεις να αγνοείς τα πολύπλοκα που δε σε ενδιαφέρουν και να βρίσκεις πιο γρήγορα τα απολύτως αναγκαία. Αν μάθεις να χρησιμοποιείς τη man σωστά είσαι στο σωστό δρόμο για να γίνεις Linux Guru :Δ

Γι αυτό κάνε γρήγορα

man man

YΓ3: η grep σε συνδυασμό με τα pipes σου λύνει τα χέρια.

Όταν το output μιας εντολής είναι τεράστιο, κοτσάρεις κι ένα

| grep

από δίπλα για να βρεις ακριβώς αυτό που θες και να μη τυραννιέσαι

 

πχ

δώσε πρώτα

ps -e

και μετά

ps -e | grep mozilla

 

:D

Δημοσ.

Η εξηγηση του cassidy ηταν εξαιρετικη και μετα απο λιγη ωρα το καταλαβα!Ευχαριστω cassidy.Αυτο που με μπερδεψε στην εξηγηση ηταν το find που εβαλε σαν λεξη-κλειδι για αναζητηση στο grep ενω εγω νομιζα πως το εδινε σαν εντολη.Αλλα νομιζω οτι εχεις κανει λαθος με το:

 

grep phonebook Γιώργος

 

γιατι το Γιώργος υποθετω μπαινει πριν το phonebook.Αλλα ενταξει, λεπτομερειες.Σχετικα με το πρωτο ΥΓ, ομως δεν καταλαβα, και γενικα, ακομα δεν εχω καταλαβει τι ειναι τα patterns.Επισης, σχετικα με το τριτο ΥΓ, δεν χρησιμοποιω mozilla, αλλα

opera ;D

Δημοσ.
Αλλα νομιζω οτι εχεις κανει λαθος με το:

 

grep phonebook Γιώργος

 

γιατι το Γιώργος υποθετω μπαινει πριν το phonebook.

Ωπ το πιασε ο νέος :). Είδες; μια χαρά θα τα πας και όπως είπε και ο cassidy είναι θέμα ψαρώματος. Επανάληψη μήτηρ πάσης μαθήσεως. Υπομονή και θα βγάλεις άκρη σύντομα.

 

ακομα δεν εχω καταλαβει τι ειναι τα patterns.

Είναι γενικός όρος (ειδικά αυτή τη στιγμή για σένα). Όμως patterns, regular expressions και filters/pipes είναι πράγματα που θα συναντάς πολύ συχνά, είναι εξαιρετικά χρήσιμα και ισχυρά εργαλεία (έννοιες) και καλό θα ήταν να τα ψάξεις. Προς το παρόν μη πελαγώνεις από τον όγκο της πληροφορίας. Πάρ'τα με τη σειρά και εδώ είμαστε και μεις :).

 

Τα patterns πάντως έχουν την ίδια έννοια και στον υπολογιστή. Μπορεί να μεταφραστεί σαν διάταξη/σχέδιο/παράσταση. Letter pattern πχ = Διάταξη γραμμάτων. Ελπίζω να το κάναμε έστω και λίγο πιο ξεκάθαρο.

 

Για να προσθέσω σε αυτά που είπε ο cassidy το "man" είναι σημαντικότατο εργαλείο και πηγή πληροφοριών. Σε λίγο καιρό θα ψάχνεις μόνο εκεί (για εντολές του συστήματος και ρουτινες C/C++/Fortran κτλ)

 

Μόνο να διορθώσω ότι patterns είναι οι παραστάσεις και regular expressions είναι η διατάξεις που χρησιμοποιείς για να συγκρίνεις/αναζητήσεις patterns. Σχετίζονται άμεσα αλλά είναι διαφορετικά πράγματα.

Δημοσ.

Ιsle μ'έπιασες! :D

 

Πάντως καλά κάνεις κι ασχολείσαι με κονσόλα, έχει να σου δώσει πολλά.

Μετά θα χαίρεσαι να φτιάχνεις δικά σου script-άκια συνδυάζοντας 4-5 απλές εντολές για να κάνεις τη δουλειά σου, χωρίς να χρειάζεται να κατεβάζεις "εξειδικευμένα" προγράμματα ;)

Δημοσ.

Ωραια, σας ευχαριστω...

Δυστυχως, οπως ειπα πριν, τα man pages ειναι δυσκολα στην αναγνωση, για να απαντησω στον tzouka.Ομως, οπως ειπε ο cassidy, ειναι ολο θεμα ψαρεματος.

Αυτο παντως με τα script-ακια μου αρεσε και μου ανοιγει ακομα περισσοτερο την ορεξη.

Θα ηταν ωραια ομως αν μπορουσατε να με βοηθησετε κι εδω

Μαλλον πρεπει να ανοιχτει θεμα:Οι ερωτησεις του Isle :wink:

Σας ευχαριστω και παλι...

Δημοσ.

Pigaine sto http://www.ss64.com

Ekei exei tis pio polles entoles tou bash gia to linux. Ousiastika exei mazepsei ta man pages se ena oraio paketaki website. Mporeis me programmata san to blackwidow i to httpweazel na katebaseis olo to site offline kai na to vlepeis apo to skliro sou. Ego auto exo kanei. To brisko poly pio ergonomiko apo to klassiko man eno dinei kai paraplisies entoles kai antistoixies me alla OS pou mporei na voithisoun

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...