grep komutu linuxda bir dosyanın içinde veya herhangi bir komutumuzdaki çıktılarda istediğimiz kelimeleri ya da harfleri aramıza yarayan çok kullanışlı bir komuttur.
Ör : grep GNOME /var/log/syslog
/var/log/ altındaki syslog dosyasında GNOME kelimesi geçen satırları getirecektir.
Ör : grep faruk /etc/passwd
/etc klasörünün altındaki sistem kullanıcılarının yetki,şifre vb detaylarının saklandığı passwd dosyasındaki faruk kelimesi geçen satırları getirecektir.
Ör : grep -c error /var/log/syslog
Yukardaki örnekte /etc/log klasörünün altında syslog dosyasında kaç satırda error kelimesi geçtiğini bulabiliriz. -c opsiyonu bize aradığımız kelimenin kaç satırda geçtiğini verecektir.
Ör : grep -i HttPs /var/log/syslog
Yukardaki örnekte kullanılan -i parametresi büyük küçük harf duyarsız aratmamızı sağlar ve genel olarak grep komutunu bu şekilde kullanmamız aradığımız şeyi gözden kaçırmamamız için faydalıdır. Örneğin yukardaki komutu -i opsiyonu olmadan kullanacak olursak büyük ihtimal hiçbir şey bulamayacaktır.
Ör : grep -n error /var/log/syslog
Yukardaki örnekte bulunan satırlar satır numaralarıyla birlikte kullanıcıya verilir.
Ör : grep -v error /var/log/syslog
-v opsiyonu ile aradığımız kelime dışında kalan satırlar gösterilir.
İstersek pipela ( | ) grep’i başka komutlarla da birleştirebiliriz.
Ör : grep -vi erRoR /var/log/syslog | awk ‘{print $1}’
Yukardaki örnekte syslog dosyasında error geçmeyen satırları bulup bu satırların sadece ilk sütünlarını bize verecektir.
Ör : grep -vi erRoR /var/log/syslog | awk ‘{print $1}’ | cut -c1-3
Yukardaki örnekte bir önceki örnekte olduğu gibi syslog dosyasında error geçmeyen satırları bulup ilk sütunlarını aldıktan sonra cut ile ilk 3 harfini verecektir.
Ör : ls -l /home/faruk | grep -i belgeler
Yukardaki komutla kendi home klasörümde adı Belgeler olan satırı -i kullandığım için bulabilirim.
egrep kullanımı
egrep grep’in geliştirilmiş bir versiyonudur. grep ” + “, ” ? ” , ” | ” gibi karakterleri aranacak basit karakterler olarak görürken egrep bunları meta-karakter olarak görür. grepte bunları meta-karakter olarak kullanmak için başına ” \ ” karakteri koymamız gerekir. grep ” -E ” parametresiyle egrep olarak da kullanabiliriz.
ls -l /home/faruk | egrep -i “belgeler|müzik”
Yukardaki örnekte /home/faruk klasörünün altında belgeler veya müzik kelimeleri geçen satırları arayarak 2 tane satır verecektir. Aynı şeyi grep komutuyla yapmak istersek aşağıdaki gibi -E parametresini girmemiz gerekir.
ls -l /home/faruk | grep -Ei “belgeler|müzik”
veya sola yatık eğik çizgi ile özel karakteri kaçınmamız gerekir;
ls -l /home/faruk | grep -i “belgeler\|müzik”