Wyszukiwanie wyrażeń w tekście

Damian Stelmach

Kolejne fajne i przydatne narzędzie powłoki systemu Linux to grep. Myślę, że nie ma na świecie admina pracującego na co dzień z Linux’em, który nie używałby tego programu. Grep służy do wyszukiwania i wyodrębniania w plikach określonego ciągu znaków tekstu. Zobaczmy przykład, takie polecenie:

cat /proc/cpuinfo

wyświetla mi informację o procesorze:

 grep_cpu

Dużo tego, a mnie interesuje np. tylko model procesora. Za pomocą polecenia grep i frazy model mogę sobie taką informację odfiltrować:

grep model /proc/cpuinfo

Wynik jak widzicie uwzględnia szukaną frazę, a nie całą zawartość pliku:

 grep_cpu_model

W przypadku wyszukiwania warto korzystać z parametru i, który nie zwraca uwagi na wielkość liter, a jak już wspomniałem kilkukrotnie Linux rozróżnia wielkość liter i jeśli nie użyjecie parametru i, a szukane słowo napisane jest z wielkiej litery, a w poleceniu zapiszemy słowo z małej to wynik będzie błędny. Jeśli chcemy oprócz modelu wyświetlić sobie powiedzmy jeszcze ilość rdzeni to też nie ma problemu, możemy użyć więcej niż jednego argumentu wyszukiwania, pamiętając, że szukane frazy należy rozdzielać kombinacją \|, a także zawrzeć w apostrofach. W takim przypadku nasze polecenie będzie wyglądało tak:

grep -i 'model\|core' /proc/cpuinfo

a jego wynik prezentuje się tak:

 grep_cpu_model_core

Inne zastosowanie polecenia grep? No jest ich cała masa, możemy np. sprawdzić czy w systemie jest użytkownik o danej nazwie:

grep -i damian /etc/passwd

albo wyszukać w logach systemowych interesującą nas usługę:

grep -i ssh /var/log/syslog

Za pomocą grep’a możecie również przeszukiwać całe katalogi, nie tylko pojedyncze pliki, wystarczy użyć parametru R. Takie polecenie np:

grep -R raz . 

Wyszuka słowa raz we wszystkich plikach znajdujących się w bieżącej lokalizacji.