egrep to wyszukiwarka tekstu, która przeczesuje pliki (albo strumień ze standardowego wejścia) i wypluwa linie pasujące do rozszerzonego wyrażenia regularnego (ERE). W praktyce to dokładnie to samo co grep -E — dostajesz pełnię regexowej składni bez zaśmiecania wzorca odwrotnymi ukośnikami. Używasz go, gdy chcesz znaleźć coś w logu, kodzie albo konfigu i potrzebujesz alternatyw, grupowania czy kwantyfikatorów bez ezoterycznego escapowania.
Składnia i najważniejsze opcje
Podstawowa forma: egrep [opcje] WZORZEC [plik...]
-i— ignoruje wielkość liter (case-insensitive).-r/-R— przeszukuje katalogi rekurencyjnie (-Ridzie też za dowiązaniami).-n— dopisuje numer linii do każdego trafienia.-v— odwraca dopasowanie: pokazuje linie, które nie pasują.-c— zamiast linii zwraca samą liczbę trafień.-o— drukuje tylko dopasowany fragment, nie całą linię.-l— wypisuje tylko nazwy plików zawierających dopasowanie.-w— dopasowuje tylko całe słowa, nie fragmenty wyrazów.
Przykłady użycia
egrep 'error|fail|warn' /var/log/syslog— wyłapuje linie z dowolnym z trzech słów; alternatywa|działa od ręki, bez escapowania.egrep -i 'colou?r' style.css— znajduje zarówno color, jak i colour, ignorując wielkość liter.egrep -rn 'TODO|FIXME' ./src— rekurencyjnie szuka znaczników w kodzie i pokazuje plik oraz numer linii.egrep -c '^[0-9]{3}\.' access.log— liczy linie zaczynające się od trzech cyfr i kropki (np. kody statusu).ps aux | egrep -v 'grep' | egrep 'nginx'— filtruje listę procesów, odsiewając przy okazji samo polecenie grep.
Częste błędy i pułapki
Najważniejsze: w nowoczesnym GNU grep (od wersji 3.8 z 2022 roku) egrep jest uznany za przestarzały i przy uruchomieniu wypisuje ostrzeżenie w stylu „egrep: warning: egrep is obsolescent; using grep -E”. Polecenie nadal działa, ale w skryptach lepiej od razu pisać grep -E — pewnego dnia egrep może zniknąć z systemu.
Druga pułapka to ERE kontra zwykły regex (BRE). W egrep metaznaki +, ?, |, () i {} są aktywne bez ukośnika. Jeśli przyzwyczaiłeś się do klasycznego grep, gdzie pisałeś \( i \{, tutaj te ukośniki zadziałają odwrotnie — będą szukać dosłownego nawiasu.
Zawsze opakowuj wzorzec w apostrofy '...', żeby powłoka nie próbowała sama rozwinąć znaków takich jak *, | czy $. I pamiętaj: egrep domyślnie czyta z wejścia, więc samo egrep wzorzec bez pliku po prostu zawiśnie, czekając na tekst.
Powiązane komendy: grep, fgrep (grep -F), ripgrep (rg), sed, awk.