Wyszukiwanie w witrynie

6 najlepszych narzędzi CLI do wyszukiwania danych w postaci zwykłego tekstu za pomocą wyrażeń regularnych


W tym przewodniku omówiono niektóre z najlepszych narzędzi wiersza poleceń używanych do wyszukiwania pasujących ciągów lub wzorców w plikach tekstowych. Narzędzia te są zwykle używane razem z wyrażeniami regularnymi – w skrócie REGEX – które są unikalnymi ciągami opisującymi wzorzec wyszukiwania.

Bez zbędnych ceregieli, zanurzmy się.

1. Dowództwo Grepa

Na pierwszym miejscu znajduje się narzędzie grep – to skrót od Global Regular Expression Print, to potężne narzędzie wiersza poleceń, które przydaje się podczas wyszukiwania określonego ciągu lub wzorca w pliku .

Grep jest domyślnie dostarczany z nowoczesnymi dystrybucjami Linuksa i zapewnia elastyczność zwracania różnych wyników wyszukiwania. Za pomocą grep możesz wykonywać szeroką gamę funkcji, takich jak:

  • Wyszukaj ciągi lub pasujące wzorce w pliku.
  • Wyszukaj ciągi znaków lub pasujące wzorce w plikach spakowanych w formacie Gzip.
  • Policz liczbę dopasowań ciągu.
  • Wydrukuj numery linii zawierających ciąg lub wzór.
  • Szukaj rekurencyjnie ciągu w katalogach.
  • Wykonaj wyszukiwanie wsteczne (tj. wyświetl wyniki ciągów znaków niespełniających kryteriów wyszukiwania).
  • Ignoruj wielkość liter podczas wyszukiwania ciągów.

Składnia polecenia grep jest dość prosta:

grep pattern FILE

Na przykład, aby wyszukać w pliku ciąg „Linux”, powiedz hello.txt, ignorując wielkość liter, uruchom polecenie:

grep -i Linux hello.txt

Aby uzyskać więcej opcji, których możesz użyć z grep, po prostu przeczytaj nasz artykuł zawierający przykłady bardziej zaawansowanych poleceń grep.

2. sed Polecenie

Sed – skrót od Edytor strumienia – to kolejne przydatne narzędzie wiersza poleceń do manipulowania tekstem w pliku tekstowym. Sed wyszukuje, filtruje i zamienia ciągi znaków w danym pliku w sposób nieinteraktywny.

Domyślnie polecenie sed wypisuje dane wyjściowe na STDOUT (Standard Out), co oznacza, że wynik wykonania jest drukowany na terminalu zamiast zapisywane w pliku.

Polecenie Sed wywoływane jest w następujący sposób:

sed -OPTIONS command [ file to be edited ]

Na przykład, aby zastąpić wszystkie wystąpienia „Unix” przez „Linux”, wywołaj polecenie:

sed 's/Unix/Linux' hello.txt

Jeśli chcesz przekierować dane wyjściowe zamiast drukować je na terminalu, użyj znaku przekierowania ( > ), jak pokazano.

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

Dane wyjściowe polecenia są zapisywane w pliku output.txt zamiast być drukowane na ekranie.

Aby sprawdzić więcej opcji, których można użyć, przejrzyj jeszcze raz strony podręcznika.

man sed

3. Potwierdź polecenie

Ack to szybkie i przenośne narzędzie wiersza poleceń napisane w języku Perl. Narzędzie Ack jest uważane za przyjazny zamiennik narzędzia grep i generuje wyniki w atrakcyjny wizualnie sposób.

Polecenie Potwierdź przeszukuje plik lub katalog w poszukiwaniu wierszy zawierających dopasowanie do kryteriów wyszukiwania. Następnie podświetla pasujący ciąg w wierszach.
Ack potrafi rozróżniać pliki na podstawie ich rozszerzeń i, do pewnego stopnia, zawartości plików.

Składnia polecenia potwierdzenia:

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

Na przykład, aby sprawdzić wyszukiwane hasło Linux, uruchom:

ack Linux hello.txt

Narzędzie wyszukiwania jest dość inteligentne i jeśli użytkownik nie dostarczy żadnego pliku ani katalogu, przeszukuje bieżący katalog i podkatalogi w poszukiwaniu wzorca wyszukiwania.

W poniższym przykładzie nie podano żadnego pliku ani katalogu, ale ack automatycznie wykrył dostępny plik i wyszukał podany pasujący wzorzec.

ack Linux

Aby zainstalować ack w swoim systemie, uruchom komendę:

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

4. Polecenie Awk

Awk to pełnoprawny język skryptowy, a także narzędzie do przetwarzania tekstu i manipulacji danymi. Wyszukuje pliki lub programy zawierające wzorzec wyszukiwania. Po znalezieniu ciągu lub wzorca awk podejmuje działanie na dopasowaniu lub linii i wypisuje wyniki na STDOUT.

Wzorzec AWK jest ujęty w nawiasy klamrowe, a cały program jest ujęty w pojedyncze cudzysłowy.

Weźmy najprostszy przykład. Załóżmy, że drukujesz datę swojego systemu, jak pokazano:

date

Załóżmy, że chcesz wydrukować tylko pierwszą wartość, czyli dzień tygodnia. W takim przypadku potokuj dane wyjściowe do awk, jak pokazano:

date | awk '{print $1}'

Aby wyświetlić kolejne wartości, oddziel je przecinkiem, jak pokazano:

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

Powyższe polecenie wyświetli dzień tygodnia i datę miesiąca.

Aby uzyskać więcej opcji, których możesz używać z awk, po prostu przeczytaj naszą serię poleceń awk.

5. Poszukiwacz srebra

Silver Searcher to wieloplatformowe narzędzie do wyszukiwania kodu open source, podobne do ack, ale z naciskiem na szybkość. Ułatwia wyszukiwanie określonego ciągu w plikach w możliwie najkrótszym czasie:

Składnia:

ag OPTIONS search_pattern /path/to/file

Na przykład, aby wyszukać ciąg „Linux” w pliku hello.txt, wywołaj polecenie:

ag Linux hello.txt

Aby uzyskać dodatkowe opcje, odwiedź strony podręcznika:

man ag

6. Repgrep

Na koniec mamy narzędzie wiersza poleceń ripgrep. Ripgrep to wieloplatformowe narzędzie do wyszukiwania wzorców wyrażeń regularnych. Jest znacznie szybszy niż wszystkie wspomniane wcześniej narzędzia wyszukiwania i rekurencyjnie przeszukuje katalogi w poszukiwaniu pasujących wzorców. Pod względem szybkości i wydajności żadne inne narzędzie nie wyróżnia się tak jak Ripgrep.

Domyślnie ripgrep pomija pliki binarne/ukryte pliki i katalogi. Pamiętaj też, że domyślnie nie będzie wyszukiwać plików ignorowanych przez pliki .gitignore/.ignore/.rgignore.

Ripgrep umożliwia także wyszukiwanie określonych typów plików. Na przykład, aby ograniczyć wyszukiwanie do plików Javascript, uruchom:

rg -Tsj

Składnia używania ripgrep jest dość prosta:

rg [OPTIONS] PATTERN [PATH...]

Na przykład. Aby wyszukać wystąpienia ciągu „Linux” w plikach znajdujących się w bieżącym katalogu, uruchom polecenie:

rg Linux

Aby zainstalować ripgrep w swoim systemie, uruchom następujące polecenia:

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]

Aby uzyskać dodatkowe opcje, odwiedź strony podręcznika:

man rg

Są to jedne z najczęściej używanych narzędzi wiersza poleceń do wyszukiwania, filtrowania i manipulowania tekstem w systemie Linux. Jeśli masz inne narzędzia, które Twoim zdaniem pominęliśmy, daj nam znać w sekcji komentarzy.