Linux Scripting Κεφάλαιο 8 – Εντολές αναζήτησης περιεχομένων αρχείου: less, grep, wc

Δημοσιεύτηκε από τον/την codebrakes στις

Linux Scripting
Κεφάλαιο 8 - Εντολές αναζήτησης περιεχομένων αρχείου: less, grep, wc

Η εντολή less

Με την εντολή less μπορούμε να αναζητήσουμε μια λέξη κλειδί σε ένα αρχείο. Έστω το αρχείο κειμένου list.txt το οποίο περιέχει το παρακάτω κείμενο.

Επεξεργαστής Κειμένου
Λειτουργικό σύστημα

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Λειτουργικό σύστημα (αγγλικά: Operating System ή OS) ονομάζεται στην επιστήμη της πληροφορικής το λογισμικό του υπολογιστή που είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων.

Στο terminal των linux θα εμφανήσει τα εξής.

Terminal Linux
codebrakes@mint : ~
Λειτουργικό σύστημα

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Λειτουργικό σύστημα (αγγλικά: Operating System ή OS) ονομάζεται στην επιστήμη της πληροφορικής το λογισμικό του υπολογιστή που είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων.

list.txt (END)

Το αποτέλεσμα σε linux τερματικό

Αφού πληκτρολογήσουμε την εντολή less και το όνομα του .txt εγγράφου που θέλουμε να δούμε τότε γράφουμε την λέξη που θέλουμε να αναζητήσουμε με αρχή τον χαρακτήρα backslash ‘/’. Για παράδειγμα.

Terminal Linux
codebrakes@mint : ~
Λειτουργικό σύστημα

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Λειτουργικό σύστημα (αγγλικά: Operating System ή OS) ονομάζεται στην επιστήμη της πληροφορικής το λογισμικό του υπολογιστή που είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων.

list.txt (END) /Λειτουργικό

Στο terminal των linux θα εμφανήσει τα εξής.

Terminal Linux
codebrakes@mint : ~
Λειτουργικό σύστημα

Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια

Λειτουργικό σύστημα (αγγλικά: Operating System ή OS) ονομάζεται στην επιστήμη της πληροφορικής το λογισμικό του υπολογιστή που είναι υπεύθυνο για τη διαχείριση και τον συντονισμό των εργασιών, καθώς και την κατανομή των διαθέσιμων πόρων.

list.txt (END)

Το αποτέλεσμα σε linux τερματικό

Γενικά το σύνολο εντολών grep, fgrep και egrep

Όταν χρειαζόμαστε να αναζητήσουμε μια συμβολοσειρά ή αλφαριθμητικό σε αρχεία χρησιμοποιούμε την εντολή grep ή παραλλαγές τους όπως η fgrep και η egrep που θα δούμε παρακάτω. Γενικά το σύνολο των εντολών αυτών μας παρέχουν την δυνατότητα αναζήτησης μιας συμβολοσειράς ή μοτίβου (pattern) που υπάρχει εντός ενός κειμένου αρχείου. Οι εντολές αυτές είναι σχετικά όμοιες μεταξύ τους αλλά έχουν διαφορετικό τρόπο με τον οποίο παράγουν το τελικό αποτέλεσμα. Παρακάτω δίνεται η δομή με την οποία συντάσσονται αυτές οι εντολές.

grep [παράμετρος] pattern “όνομα .txt αρχείου 1” … “όνομα .txt αρχείου n“
fgrep [παράμετρος] “συμβολοσειρά” “όνομα .txt αρχείου 1” … “όνομα .txt αρχείου n”
egrep [παράμετρος] pattern “όνομα .txt αρχείου 1” .. “όνομα .txt αρχείου n”

Μια συνοπτική ανασκόπηση της εντολής grep

Με την εντολή grep (Global Regular Expression Print) μπορούμε να εντοπίσουμε μια συμβολοσειρά σε ένα κείμενο. Δηλαδή η εντολή αυτή παίρνει δύο παραμέτρους μια που αφορά την λέξη που ψάχνουμε και μία που αφορά το έγγραφο στο οποίο επιθυμούμε να γίνει αυτή η αναζήτηση.

Terminal Linux
codebrakes@mint : ~ grep “Σήμερα” filename.txt
Σήμερα έχει καλό καιρό

Φανταστείτε την εντολή αυτή όπως το CTRL + F όπου όταν ήμαστε στον browser μας (π.χ. Firefox) ή όταν ψάχνουμε κάτι σε ένα pdf έγγραφο και πληκτρολογούμε στο textbox την λέξη που θέλουμε να βρούμε. Όταν πατάμε το Enter εκτελείται η διαδικασία εύρεσης αυτής της λέξης ή της συμβολοσειράς. Η εντολή grep έχει διάφορες παραμέτρους. Παρακάτω θα περιγράψουμε τις πιο απαραίτητες επιλογές που μπορεί να πάρει η εντολή grep. Ο παρακάτω πίνακας αποτυπώνει μια πρώτη εικόνα γι’ αυτές τις επιλογές.

Παράμετρος Περιγραφή
-b Εμφάνισε το block αριθμών στην αρχή κάθε γραμμής
-c Εμφάνισε πόσες φορές υπάρχει η λέξη στο έγγραφο
-h Εμφάνισε τις παραγράφους που υπάρχει η λέξη
-i Αγνόησε την διάκριση μεταξύ πεζών και κεφαλαίων (case sensitive)
-n Εμφάνισε τις παραγράφους που υπάρχει η λέξη όπως και τον αριθμό αυτών
-v Εμφάνισε τις παραγράφους όπου δεν υπάρχει αυτή η λέξη
-w Περιόρισε την αναζήτηση μόνο σε ολοκληρωμένες λέξεις

Με την επιλογή –i μπορούμε να αναζητήσουμε μια λέξη από ένα έγγραφο χωρίς να μας ενδιαφέρει το case sensitivity.

Terminal Linux
codebrakes@mint : ~ grep -i “σήμερα” filename.txt
Σήμερα έχει καλό καιρό

Όταν θέλουμε να εντοπίσουμε μια λέξη από δύο αρχεία τότε η εντολή grep συντάσσεται ως εξής:

Terminal Linux
codebrakes@mint : ~ grep “Σήμερα” grepfile1 grepfile1

grepfile1: Σήμερα έχει καλό καιρό
grepfile2: Σήμερα θα βρέξει

Έστω ότι έχουμε δύο αρχεία με διαφορετικές επεκτάσεις τα οποία έχουν ακριβώς το ίδιο όνομα (π.χ. grepfile.html και grepfile.txt) σε αυτήν την περίπτωση θα γράψουμε το εξής.

Terminal Linux
codebrakes@mint : ~ grep “Σήμερα” grepfile*.*

grepfile1.txt: Σήμερα έχει καλό καιρό
grepfile2.html: Σήμερα θα βρέξει

Ας υποθέσουμε ότι έχουμε ένα .txt έγγραφο με το παρακάτω κείμενο.

Terminal Linux
codebrakes@mint : ~ grep “περιεχόμενα.*κείμενο” grepfile

Στην πληροφορική, απλό κείμενο (plain text) είναι τα περιεχόμενα ενός απλού σειριακού (sequential) αρχείου όταν διαβάζονται σαν κείμενο, χωρίς να είναι αναγκαία επεξεργασία για την εμφάνισή του, σε αντίθεση με το κείμενο με μορφοποίηση (formatted text)

Εμείς θέλουμε από το παραπάνω περιεχόμενο κειμένου του αρχείου grepfile να βρούμε ποια φράση αρχίζει με την λέξη «περιεχόμενα» και τελειώνει με την λέξη «κείμενο». Για να το κάνουμε αυτό θα γράψουμε το εξής:

grep “περιεχόμενα.*κείμενο” grepfile

Συνεπώς στο τερματικό των linux θα μας εμφανίσει τα εξής:

Terminal Linux
codebrakes@mint : ~ grep “περιεχόμενα.*κείμενο” grepfile

Στην πληροφορική, απλό κείμενο (plain text) είναι τα περιεχόμενα ενός απλού σειριακού (sequential) αρχείου όταν διαβάζονται σαν κείμενο, χωρίς να είναι αναγκαία επεξεργασία για την εμφάνισή του, σε αντίθεση με το κείμενο με μορφοποίηση (formatted text)

Με την επιλογή –n μπορούμε να εντοπίσουμε πόσες φορές εμφανίζεται μια λέξη σε ένα κείμενο:

Terminal Linux
codebrakes@mint : ~ grep –n “κείμενο” grepfile
Στην πληροφορική, απλό κείμενο (plain text) είναι τα περιεχόμενα ενός απλού σειριακού (sequential) αρχείου όταν διαβάζονται σαν κείμενο, χωρίς να είναι αναγκαία επεξεργασία για την εμφάνισή του, σε αντίθεση με το κείμενο με μορφοποίηση (formatted text)

Με τον παραπάνω τρόπο ταξινομούμε τα δεδομένα μας με βάση τα δεδομένα που υπάρχουν πριν το κόμμα (δηλαδή κατά αλφαβητική σειρά)

Terminal Linux
codebrakes@mint : ~ $  sort -t”,”-k2,2 sortfile
Solaris,10
HPUX,100
Linux,20
AIX,25
Linux,25
Unix,30

Η εντολή wc

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

wc [παράμετρος]… [όνομα αρχείου]…

Η εντολή wc παίρνει τις εξής παραμέτρους.

Παράμετρος Περιγραφή
-c Τύπωσε το μέγεθος όλων των λέξεων του εγγράφου σε bytes
-w Τύπωσε μόνο τον αριθμό των λέξεων
-l Τύπωσε μόνο τον αριθμό των παραγράφων

Παρακάτω ακολουθεί ένα παράδειγμα της εντολής αυτής σε terminal των linux.

Το αποτέλεσμα σε linux τερματικό

Τελευταία ενημέρωση: 01/08/2019

Κατηγορίες: Linux Scripting