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.