grep Polecenie w systemie Linux z przykładami

Polecenie grep jest jednym z najczęściej używanych narzędzi w systemie Linux, używanym głównie do wyszukiwania i filtrowania tekstu w plikach. Skrót oznacza „Global Regular Expression Print”, a jego siła polega na możliwości wydajnego wyszukiwania dużych ilości tekstu przy użyciu wzorców zwanych wyrażeniami regularnymi. Niezależnie od tego, czy szukasz określonych ciągów znaków, filtrujesz logi, czy wykonujesz złożone zadania przetwarzania tekstu, grep jest niezbędnym narzędziem dla użytkowników Linuksa. Ten przewodnik zademonstruje, jak używać polecenia grep, wraz z praktycznymi przykładami, które pomogą Ci opanować jego użycie do różnych zadań.

Zrozumienie różnych opcji polecenia grep

grep bez żadnych opcji

Najprostsza forma polecenia grep wygląda następująco:

grep 'pattern' file

To polecenie przeszuka plik w poszukiwaniu linii zawierających wzór i wydrukuje je na standardowe wyjście.

polecenie grep z opcjami

Można używać różnych opcji z grep polecenie modyfikacji jego funkcjonalności. Niektóre powszechnie używane to:

  • -i : sprawia, że ​​wielkość liter w wyszukiwaniu nie jest uwzględniana.
  • -v : Odwraca wyszukiwanie i drukuje linie, które nie pasują do wzorca.
  • -r Lub -R : Wykonuje rekursywne przeszukiwanie katalogów.
  • -l : Zwraca nazwy plików, w których znaleziono wzorzec, zamiast linii.
  • -n : Wyświetla numery linii z liniami wyjściowymi.

Przykładowe użycie opcji:

grep -i 'pattern' file

To polecenie przeprowadzi wyszukiwanie wzorca w pliku bez uwzględniania wielkości liter.

Wyświetlanie linii pasujących do wzorca

Podstawowym zastosowaniem grep jest drukowanie linii pasujących do określonego wzorca. Na przykład:

grep 'hello' file.txt

Spowoduje to wydrukowanie wszystkich linii z pliku.txt zawierających słowo „hello”.

Wyświetlanie linii niepasujących do wzorca

Używając opcji -v, możemy wydrukować linie, które nie pasują do wzorca:

grep -v 'hello' file.txt

To polecenie wydrukuje wszystkie linie z pliku.txt, które nie zawierają słowa „hello”.

Wyszukiwanie bez uwzględniania wielkości liter

Opcja -i umożliwia wyszukiwanie bez uwzględniania wielkości liter:

grep -i 'hello' file.txt

To polecenie wydrukuje wszystkie linie pliku.txt zawierające słowo „hello”, niezależnie od wielkości liter.

Przeszukaj wiele plików

Polecenie grep może również przeszukiwać wiele plików:

grep 'hello' file1.txt file2.txt

To polecenie wyświetli linie zawierające „hello” z pliku 1.txt i pliku 2.txt.

Zaawansowane użycie polecenia grep

Używanie wyrażeń regularnych z poleceniem grep

Polecenie grep może wykorzystywać zaawansowane wyrażenia regularne do dopasowywania złożonych wzorców. Na przykład:

grep '^hello' file.txt

To polecenie wydrukuje linie z pliku.txt zaczynające się od „hello”.

Używanie polecenia grep z potokiem i innymi poleceniami

Polecenie grep można łączyć z innymi poleceniami za pomocą potoków, aby wykonywać bardziej złożone operacje. Można na przykład wyświetlić listę wszystkich plików w katalogu i przefiltrować je według wzorca:

ls | grep '.txt'

To polecenie wyświetli listę wszystkich plików w bieżącym katalogu, które mają „.txt” w nazwie.

Typowe przykłady poleceń grep

Przykład 1: Podstawowe wyszukiwanie wzorców

Podstawowe wyszukiwanie wzorca w pliku:

grep 'hello' file.txt

Spowoduje to wydrukowanie wszystkich linii z pliku.txt zawierających słowo „cześć”.

Przykład 2: Wyszukiwanie bez uwzględniania wielkości liter

Wyszukiwanie wzorca bez uwzględniania wielkości liter:

grep -i 'hello' file.txt

To polecenie wyświetli linie zawierające „cześć”, niezależnie od wielkości liter.

Przykład 3: Wyszukiwanie odwróconego wzorca

Wyszukiwanie linii niezawierających wzorca:

grep -v 'hello' file.txt

To polecenie wyświetli linie niezawierające słowa „cześć”.

Przykład 4: Numer linii z liniami wyjściowymi

Drukowanie numerów linii z liniami wyjściowymi:

grep -n 'hello' file.txt

To polecenie wyświetli linie zawierające „cześć” i ich numery.

Przykład 5: Wyszukiwanie rekurencyjne

Wykonywanie rekurencyjnego wyszukiwania wzorca:

grep -r 'hello' /home/user/

To polecenie wykona rekurencyjne wyszukiwanie „hello” w katalogu /home/user/ i podkatalogach.

Przykład 6: Nazwa pliku z liniami wyjściowymi

Drukowanie nazw plików wraz z liniami wyjściowymi:

grep -l 'hello' *

To polecenie wyświetli nazwy plików w bieżącym katalogu, które zawierają słowo „hello”.

Przykład 7: Liczenie wystąpień wzorca

Liczenie liczby linii zawierających określony wzór:

grep -c 'hello' file.txt

To polecenie zliczy i wyświetli liczbę wierszy pliku.txt zawierających słowo „hello”.

Przykład 8: Wyszukiwanie wyrażeń regularnych

Wyszukiwanie linii rozpoczynających się od określonego wzorca:

grep '^hello' file.txt

To polecenie wydrukuje linie z pliku.txt zaczynające się od „hello”.

Przykład 9: Wyświetlanie znaków przed i po meczu

Wyświetlanie określonej liczby znaków przed i po meczu:

grep -o -P '.{0,10}hello.{0,10}' file.txt

To polecenie wyświetli 10 znaków przed i 10 znaków po wzorcu „cześć”.

Przykład 10: Wyszukiwanie w plikach skompresowanych

Wyszukiwanie w skompresowanym pliku bez jawnej dekompresji:

zgrep 'hello' file.txt.gz

To polecenie wyszuka słowo „hello” w skompresowanym pliku file.txt.gz.

Przykład 11: Wyświetlanie tylko dopasowanych wzorców

Wyświetlanie tylko dopasowanych wzorców:

grep -o 'hello' file.txt

To polecenie wydrukuje tylko słowo „hello” z pliku.txt, ignorując resztę linii.

Przykład 12: Wykluczanie katalogów w wyszukiwaniu rekurencyjnym

Wykluczanie określonych katalogów podczas wyszukiwania rekurencyjnego:

grep --exclude-dir={dir1,dir2} -r 'hello' .

To polecenie rekurencyjnie wyszukuje „hello” w bieżącym katalogu, z wyłączeniem katalogów dir1 i dir2.

Przykład 13: Używanie rozszerzonych wyrażeń regularnych

Używanie rozszerzonych wyrażeń regularnych do dopasowywania złożonych wzorców:

grep -E 'hello|world' file.txt

To polecenie wyświetli linie z pliku.txt zawierające „hello” lub „world”.

Przykład 14: Dopasowywanie tylko całych słów

Dopasowywanie tylko całych słów, z wyłączeniem częściowych dopasowań słów:

grep -w 'hello' file.txt

To polecenie wydrukuje wiersze z pliku.txt zawierające słowo „cześć” jako całe słowo.

Przykład 15: Wykluczanie plików w wyszukiwaniu rekurencyjnym

Wykluczanie określonych plików podczas wyszukiwania rekurencyjnego:

grep --exclude={file1,file2} -r 'hello' .

To polecenie będzie rekursywnie szukać „hello” w bieżącym katalogu, z wyłączeniem pliku1 i pliku2.

Zaawansowane przykłady poleceń grep

Przykład 1: Używanie grep z innymi poleceniami

Moc grep może być jeszcze większa, gdy jest używany w połączeniu z innymi poleceniami. Na przykład, aby policzyć liczbę aktywnych połączeń z serwerem WWW, możemy użyć grep razem z netstat:

netstat -an | grep ':80' | grep 'ESTABLISHED' | wc -l

To polecenie wyświetli liczbę aktywnych połączeń do portu 80 na serwerze.

Przykład 2: Używanie grep z wyrażeniami regularnymi

Aby wyszukać linie zakończone określonym wzorcem, możemy użyć grep z wyrażeniem regularnym:

grep 'world$' file.txt

To polecenie wydrukuje linie z pliku.txt kończące się na „świat”.

Przykład 3: Używanie grep z wyrażeniami regularnymi dla wielu wzorców

W przypadku bardziej złożonego dopasowywania wzorców obejmującego wiele wzorców możemy użyć grep z rozszerzonymi wyrażeniami regularnymi:

grep -E '^(error|warning):' file.txt

To polecenie wydrukuje wiersze z pliku.txt zaczynające się od „error:” lub „warning:”.

Przykład 4: Używanie grep w skrypcie Bash

Polecenie grep można wykorzystać w skryptach bash do wykonywania operacji w zależności od tego, czy znaleziono wzorzec. Na przykład:

if grep -q 'error' file.txt; then
    echo 'Error found!'
else
    echo 'No errors found.'
fi

Ten skrypt wyświetli komunikat „Znaleziono błąd!” jeśli w pliku.txt zostanie znalezione słowo „błąd” i „Nie znaleziono błędów”. jeśli tak nie jest.

Przykład 5: Używanie grep do wyszukiwania wzorca w pliku binarnym

Mimo że grep jest zwykle używany do wyszukiwania tekstu, może również przeszukiwać pliki binarne w poszukiwaniu wzorca:

grep -a 'hello' binaryfile

To polecenie wyszuka ciąg „hello” w pliku binarnym, traktując go jako tekst.

Wniosek

Opanowanie polecenia grep może znacznie zwiększyć możliwości wyszukiwania, filtrowania i manipulowania plikami tekstowymi w systemie Linux. Niezależnie od tego, czy rozwiązujesz problemy z dziennikami systemowymi, szukasz określonych wzorców w kodzie, czy filtrujesz dane wyjściowe innych poleceń, grep zapewnia elastyczne i niezawodne rozwiązanie. Regularna praktyka z poleceniem i odkrywanie jego licznych opcji i flag sprawi, że stanie się ono nieocenioną częścią zestawu narzędzi dla Linuksa.

Joshua James
Chodź za mną
Najnowsze posty autorstwa Joshua James (widzieć wszystko)

Dodaj komentarz