6 καλύτερα εργαλεία CLI για αναζήτηση δεδομένων απλού κειμένου με χρήση τυπικών εκφράσεων


Αυτός ο οδηγός κάνει μια περιήγηση σε μερικά από τα καλύτερα εργαλεία γραμμής εντολών που χρησιμοποιούνται για την αναζήτηση ταιριασμένων συμβολοσειρών ή μοτίβων σε αρχεία κειμένου. Αυτά τα εργαλεία χρησιμοποιούνται συνήθως μαζί με κανονικές εκφράσεις – συντομευμένες ως REGEX – οι οποίες είναι μοναδικές συμβολοσειρές για την περιγραφή ενός μοτίβου αναζήτησης.

Χωρίς πολλά άλλα, ας βουτήξουμε.

1. Εντολή Grep

Το εργαλείο grep utility έρχεται στην πρώτη θέση – είναι ακρωνύμιο του Global Regular Expression Print, είναι ένα ισχυρό εργαλείο γραμμής εντολών που είναι χρήσιμο όταν αναζητάτε μια συγκεκριμένη συμβολοσειρά ή ένα μοτίβο σε ένα αρχείο .

Το Grep διατίθεται με σύγχρονες διανομές Linux από προεπιλογή και σας δίνει την ευελιξία να εμφανίζετε διάφορα αποτελέσματα αναζήτησης. Με το grep, μπορείτε να εκτελέσετε μια τεράστια γκάμα λειτουργιών όπως:

  • Αναζητήστε συμβολοσειρές ή αντίστοιχα μοτίβα σε ένα αρχείο.
  • Αναζητήστε συμβολοσειρές ή αντίστοιχα μοτίβα σε αρχεία Gzipped.
  • Μετρήστε τον αριθμό των αντιστοιχιών συμβολοσειρών.
  • Εκτυπώστε τους αριθμούς γραμμών που περιέχουν τη συμβολοσειρά ή το μοτίβο.
  • Αναζητήστε αναδρομικά τη συμβολοσειρά σε καταλόγους.
  • Εκτελέστε μια αντίστροφη αναζήτηση (δηλαδή Εμφάνιση αποτελεσμάτων συμβολοσειρών που δεν ταιριάζουν με τα κριτήρια αναζήτησης).
  • Αγνοήστε την ευαισθησία πεζών-κεφαλαίων κατά την αναζήτηση συμβολοσειρών.

Η σύνταξη για τη χρήση της εντολής grep είναι αρκετά απλή:

grep pattern FILE

Για παράδειγμα, για να αναζητήσετε τη συμβολοσειρά "Linux" σε ένα αρχείο, ας πούμε, hello.txt ενώ αγνοείτε την ευαισθησία πεζών-κεφαλαίων, εκτελέστε την εντολή:

grep -i Linux hello.txt

Για να λάβετε περισσότερες επιλογές που μπορείτε να χρησιμοποιήσετε με το grep, απλώς διαβάστε το άρθρο μας που παρουσιάζει παραδείγματα πιο προηγμένων εντολών grep.

2. sed Εντολή

Το Sed – συντομογραφία για Επεξεργαστής ροής – είναι ένα άλλο χρήσιμο εργαλείο γραμμής εντολών για την επεξεργασία κειμένου σε αρχείο κειμένου. Το Sed αναζητά, φιλτράρει και αντικαθιστά συμβολοσειρές σε ένα δεδομένο αρχείο με μη διαδραστικό τρόπο.

Από προεπιλογή, η εντολή sed εκτυπώνει την έξοδο σε STDOUT (Standard Out), υπονοώντας ότι το αποτέλεσμα της εκτέλεσης εκτυπώνεται στο τερματικό αντί για αποθηκεύεται σε αρχείο.

Η εντολή Sed καλείται ως εξής:

sed -OPTIONS command [ file to be edited ]

Για παράδειγμα, για να αντικαταστήσετε όλες τις παρουσίες του ‘Unix’ με το ‘Linux’, χρησιμοποιήστε την εντολή:

sed 's/Unix/Linux' hello.txt

Εάν θέλετε να ανακατευθύνετε την έξοδο αντί να την εκτυπώσετε στο τερματικό, χρησιμοποιήστε το σύμβολο ανακατεύθυνσης ( > ) όπως φαίνεται.

sed 's/Unix/Linux' hello.txt > output.txt

Η έξοδος της εντολής αποθηκεύεται στο αρχείο output.txt αντί να εκτυπωθεί στην οθόνη.

Για να δείτε περισσότερες επιλογές που μπορούν να χρησιμοποιηθούν, ελέγξτε ξανά τις σελίδες man.

man sed

3. Εντολή Ack

Το Ack είναι ένα γρήγορο και φορητό εργαλείο γραμμής εντολών γραμμένο σε Perl. Το Ack θεωρείται φιλική αντικατάσταση του grep utility και τα αποτελέσματα έχουν οπτικά ελκυστικό τρόπο.

Η εντολή Ack πραγματοποιεί αναζήτηση στο αρχείο ή στον κατάλογο για τις γραμμές που περιέχουν την αντιστοίχιση για τα κριτήρια αναζήτησης. Στη συνέχεια επισημαίνει την αντίστοιχη συμβολοσειρά στις γραμμές.
Το Ack έχει την ικανότητα να διακρίνει τα αρχεία με βάση τις επεκτάσεις των αρχείων τους και, σε κάποιο βαθμό, το περιεχόμενο στα αρχεία.

Σύνταξη εντολής Ack:

ack [options] PATTERN [FILE...]
ack -f [options] [DIRECTORY...]

Για παράδειγμα, για να ελέγξετε για τον όρο αναζήτησης Linux, εκτελέστε:

ack Linux hello.txt

Το εργαλείο αναζήτησης είναι αρκετά έξυπνο και εάν δεν παρέχεται αρχείο ή κατάλογος από τον χρήστη, αναζητά τον τρέχοντα κατάλογο και τους υποκαταλόγους για το μοτίβο αναζήτησης.

Στο παρακάτω παράδειγμα, δεν έχει παρασχεθεί κανένα αρχείο ή κατάλογος, αλλά το ack εντόπισε αυτόματα το διαθέσιμο αρχείο και αναζήτησε το αντίστοιχο μοτίβο που παρέχεται.

ack Linux

Για να εγκαταστήσετε το ack στο σύστημά σας, εκτελέστε την εντολή:

sudo apt install ack-grep    [On Debian/Ubuntu]
sudo dnf install ack-grep    [On CentOS/RHEL]

4. Εντολή Awk

Η Awk είναι μια πλήρως ανεπτυγμένη γλώσσα σεναρίου και επίσης ένα εργαλείο επεξεργασίας κειμένου και χειρισμού δεδομένων. Αναζητά αρχεία ή προγράμματα που περιέχουν το μοτίβο αναζήτησης. Όταν βρεθεί η συμβολοσειρά ή το μοτίβο, το awk αναλαμβάνει δράση στο ταίριασμα ή τη γραμμή και εκτυπώνει τα αποτελέσματα στο STDOUT.

Το μοτίβο AWK περικλείεται ανάμεσα σε σγουρά τιράντες ενώ ολόκληρο το πρόγραμμα περικλείεται σε μονά εισαγωγικά.

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

date

Ας υποθέσουμε ότι θέλετε να εκτυπώσετε μόνο την πρώτη τιμή, που είναι η ημέρα της εβδομάδας. Σε αυτήν την περίπτωση, διοχετεύστε την έξοδο σε awk όπως φαίνεται:

date | awk '{print $1}'

Για να εμφανίσετε τις επόμενες τιμές, διαχωρίστε τις χρησιμοποιώντας κόμμα όπως φαίνεται:

date | awk '{print $1,$2}'

Η παραπάνω εντολή θα εμφανίσει την ημέρα της εβδομάδας και την ημερομηνία του μήνα.

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

5. Silver Searcher

Το silver searcher είναι ένα εργαλείο αναζήτησης κώδικα σε πολλές πλατφόρμες και ανοιχτού κώδικα παρόμοιο με το ack αλλά με έμφαση στην ταχύτητα. Σας διευκολύνει να αναζητήσετε μια συγκεκριμένη συμβολοσειρά μέσα σε αρχεία στο συντομότερο δυνατό χρόνο:

Σύνταξη :

ag OPTIONS search_pattern /path/to/file

Για παράδειγμα, για να αναζητήσετε τη συμβολοσειρά "Linux" σε ένα αρχείο hello.txt καλέστε την εντολή:

ag Linux hello.txt

Για πρόσθετες επιλογές, επισκεφτείτε τις σελίδες man:

man ag

6. Ripgrep

Τέλος, έχουμε το εργαλείο γραμμής εντολών ripgrep. Το Ripgrep είναι ένα βοηθητικό πρόγραμμα πολλαπλών πλατφορμών για την αναζήτηση μοτίβων regex. Είναι πολύ πιο γρήγορο από όλα τα προαναφερθέντα εργαλεία αναζήτησης και αναζητά αναδρομικά τους καταλόγους για αντιστοίχιση μοτίβων. Όσον αφορά την ταχύτητα και την απόδοση, κανένα άλλο εργαλείο δεν ξεχωρίζει από το Ripgrep.

Από προεπιλογή, το ripgrep θα παραλείψει δυαδικά αρχεία/κρυφά αρχεία και καταλόγους. Επίσης, σας ενημερώνουμε ότι από προεπιλογή δεν θα πραγματοποιεί αναζήτηση για αρχεία που αγνοούνται από αρχεία .gitignore/.ignore/.rgignore.

Το Ripgrep σας επιτρέπει επίσης να αναζητήσετε συγκεκριμένους τύπους αρχείων. Για παράδειγμα, για να περιορίσετε την αναζήτησή σας σε αρχεία Javascript που εκτελούνται:

rg -Tsj

Η σύνταξη για τη χρήση του ripgrep είναι αρκετά εύκολη:

rg [OPTIONS] PATTERN [PATH...]

Για παράδειγμα. Για να αναζητήσετε παρουσίες της συμβολοσειράς ‘Linux’ σε αρχεία που βρίσκονται μέσα στον τρέχοντα κατάλογο, εκτελέστε την εντολή:

rg Linux

Για να εγκαταστήσετε το ripgrep στο σύστημά σας, εκτελέστε τις ακόλουθες εντολές:

sudo apt install ripgrep      [On Debian/Ubuntu]
sudo pacman -S ripgrep        [On Arch Linux]
sudo zypper install ripgrep   [On OpenSuse]
sudo dnf install ripgrep      [On CentOS/RHEL/Fedora]

Για πρόσθετες επιλογές, επισκεφτείτε τις σελίδες man:

man rg

Αυτά είναι μερικά από τα πιο ευρέως χρησιμοποιούμενα εργαλεία γραμμής εντολών για αναζήτηση, φιλτράρισμα και χειρισμό κειμένου στο Linux. Εάν έχετε άλλα εργαλεία που πιστεύετε ότι έχουμε παραλείψει, ενημερώστε μας στην ενότητα σχολίων.