W tym artykule wyjaśnimy użycie narzędzia grep na różnych przykładach. Użyjemy Debiana 10 do wyjaśnienia poleceń i metod wymienionych w tym artykule.
Instalowanie Grepa
Grep jest instalowany w większości dystrybucji Linuksa. Jeśli jednak brakuje go w twoim systemie, możesz go zainstalować za pomocą następującej metody w Terminalu:
$ sudo apt-get install grepKorzystanie z Grepa
Oto podstawowa składnia polecenia grep. Zaczyna się od grep, po którym następuje kilka opcji i kryteriów wyszukiwania, a kończy się nazwą pliku.
$ grep [opcje] WZÓR [PLIK… ]Szukaj plików
Aby wyszukać nazwę pliku w katalogu zawierającym określony ciąg, możesz użyć grep w następujący sposób:
$ ls -l | grep -i „ciąg”Na przykład, aby wyszukać nazwę pliku zawierającą ciąg „test„, polecenie to:
$ ls -l | grep -i testTo polecenie wyświetla listę wszystkich plików zawierających ciąg „test”.
Wyszukaj ciąg w pliku
Aby wyszukać ciąg w określonym pliku, możesz użyć następującej składni polecenia:
$ grep “string” nazwa plikuNa przykład, aby wyszukać ciąg „test” w pliku o nazwie plik testowy1, użyliśmy następującego polecenia:
$ grep „pracownik” plik testowy1
Powyższe wyjście zwróciło zdanie z plik testowy1 zawierający ciąg „pracownik”.
Wyszukaj ciąg w wielu plikach
Aby wyszukać ciąg w wielu plikach, możesz użyć następującej składni polecenia:
$ grep “string” nazwa_pliku1 nazwa_pliku2Na przykład, aby wyszukać ciąg „pracownik” w naszych dwóch plikach testfile1 i testfile2, użyliśmy następującego polecenia:
$ grep „pracownik” plik testowy1 plik testowy2
Powyższe polecenie wyświetli listę wszystkich wierszy zawierających ciąg „pracownik” z obu plików testfile1 i testfile2.
Możesz także użyć znaku wieloznacznego, jeśli wszystkie nazwy plików zaczynają się od tego samego tekstu.
$ grep „string” nazwa pliku*Na przykład, jeśli weźmiemy powyższy przykład, w którym nasze nazwy plików były testfile1 i testfile2 , polecenie byłoby:
$ plik testowy grep „pracownik”*
Wyszukaj ciąg w pliku, ignorując wielkość liter
Najczęściej spotkałeś się z tym, gdy szukasz czegoś za pomocą grep, ale nie otrzymujesz wyniku. Dzieje się tak z powodu niezgodności wielkości liter podczas wyszukiwania ciągu. Jak w naszym przykładzie, jeśli błędnie użyjemy „Pracownik" zamiast "pracownik”, zwróci zero, ponieważ nasz plik zawiera ciąg „pracownik” małymi literami.
Możesz powiedzieć grepowi, aby ignorował wielkość liter w wyszukiwanym ciągu, używając flagi -i po grep w następujący sposób:
$ grep -i nazwa pliku „string”
Używając flagi -i, polecenie wykona wyszukiwanie bez uwzględniania wielkości liter i zwróci wszystkie wiersze zawierające ciąg „pracownik” w nim bez uwzględnienia liter są duże lub małe lower.
Szukaj za pomocą wyrażenia regularnego
Właściwie użyte wyrażenie regularne jest bardzo skuteczną funkcją w grep. Za pomocą polecenia Grep możesz zdefiniować wyrażenie regularne z początkowym i końcowym słowem kluczowym. Dzięki temu nie będziesz musiał wpisywać całej linii za pomocą polecenia grep. W tym celu można użyć następującej składni.
$ grep “startowe słowo kluczowe.*endingKeyword” nazwa plikuNa przykład, aby wyszukać wiersz w pliku o nazwie testfile1, który zaczyna się od ciągu „this” i kończy ciągiem „dane”, użyliśmy następującego polecenia:
$ grep „to”.*dane” plik testowy1
Wydrukuje całą linię z plik testowy1 zawierające wyrażenie (początkowe słowo kluczowe „this” i końcowe słowo kluczowe „dane”).
Wydrukuj określoną liczbę wierszy po/przed szukanym ciągiem
Możesz także wyświetlić określoną liczbę wierszy w pliku przed/po dopasowaniu ciągu wraz z samym dopasowanym ciągiem. W tym celu można użyć następującej składni:
$ grep -AWyświetli liczbę N linii po dopasowaniu ciągu w określonym pliku, w tym dopasowanym ciągu.
Na przykład jest to nasz przykładowy plik o nazwie plik testowy2.
Następujące polecenie wyświetli dopasowany wiersz zawierający ciąg „pracownik”, wraz z 2 wierszami po nim.
$ grep -A 2 -i plik testowy „pracownik”2
Podobnie, aby wyświetlić liczbę N wierszy przed dopasowanym ciągiem w określonym pliku, użyj następującej składni:
$ grep -BAby wyświetlić liczbę N wierszy wokół ciągu w określonym pliku, użyj następującej składni:
$ grep -CPodświetlanie wyszukiwania
Grep domyślnie wypisuje dopasowane wiersze, ale nie pokazuje, która część wiersza jest dopasowana. Jeśli użyjesz opcji -color z grepem, pokaże ona, gdzie w twoim pliku pojawiają się ciągi obróbki. Grep domyślnie używa koloru czerwonego do podświetlania.
W tym celu można użyć następującej składni:
$ grep “string” nazwa pliku --color
Liczenie liczby meczów
Jeśli chcesz policzyć, ile razy dane słowo pojawia się w określonym pliku, możesz użyć grep z opcją -c. Zwraca tylko liczbę dopasowań, a nie same dopasowania. W tym celu można użyć następującej składni:
$ grep -c “string” nazwa plikuOto nasz przykładowy plik wygląda następująco:
Poniżej znajduje się przykład polecenia, które zwróciło liczbę razy słowa plik pojawił się w pliku o nazwie plik testowy3.
Wyszukiwanie odwrócone
Czasami chcesz przeprowadzić wyszukiwanie wsteczne, które wyświetla wszystkie wiersze oprócz pasujących do danych wejściowych. Aby to zrobić, po prostu użyj flagi -v, a następnie grep:
$ grep -v „string” nazwa plikuNa przykład, aby wyświetlić wszystkie wiersze w pliku plik testowy3 które nie zawierają w sobie słowa „konto”, użyliśmy następującego polecenia:
$ grep -v „konto” plik testowy3
Używanie Grepa z innymi poleceniami
Grep może być również użyty do odfiltrowania wymaganych wyników z różnych danych wyjściowych poleceń. Na przykład z „apt -lista zainstalowanych” wyjście polecenia, chcesz znaleźć tylko pakiety, które zostały zainstalowane automatycznie, możesz odfiltrować wynik za pomocą grep w następujący sposób:
$ apt --zainstalowana lista | grep automatyczny
Podobnie lscpu dostarcza szczegółowych informacji o procesorze. Jeśli interesują Cię tylko informacje dotyczące architektury procesora, możesz je odfiltrować za pomocą następującego polecenia:
$ lscpu | grep Architektura
W tym artykule opisaliśmy kilka przykładów, które pomogą Ci zrozumieć polecenia grep i ich użycie w różnych warunkach. Posiadanie silnego uchwytu na polecenie grep może zaoszczędzić dużo czasu, jeśli musisz przeglądać duże pliki konfiguracyjne lub dzienniki i przeglądać przez nie przydatne informacje.