Grep ile bir dosya içerisinde arama yapabilirsiniz. Ayrıca aranacak ifadenin aranacak dosyadan önce yazılmış olması gerekir. Recursive olarak dosyalarda aramak için ise -r (-R, –recursive) parametresi kullanlır.
grep [opsiyon] <aranacak-ifade> <dosya-adi> grep "gokhan kesici" isimler.txt grep 232 sayilar.txt grep 'merhaba' merhabadunya.txt grep -iR gokhan /etc/
Birden fazla dosyada aramak için dosya adları yanyana verilebilir. Eğer birden fazla dosya içerisinde aranan bulunursa bu durumda gösterim <dosyadi>:<satır> şeklinde olur.
grep [opsiyon] <aranacak-ifade> <dosya-1><dosya-2> grep "root" /etc/passwd /etc/shadow
Çıktıdan aramak için pipe ( | ) kullanılır. Dosya adını girmeye gerek yoktur. Hatta hatta bir çok kez pipe yapabilir.
çıktı | grep [opsiyon] <aranacak-ifade> cat adsoyadlar.txt | grep "gokhan kesici" cat adsoyadlar | grep gokhan | grep kesici tail -f /var/log/syslog | grep "dbus"
Bir komutun çıktısını aramak isterseniz aracanak ifade yerine ` ` şeklindeki yatık tırnakların arasında komutu kullanabilirsiniz. Bu işlem komutu çalıştırıp aranacak ifadeymiş gibi sunulur.
grep `whoami` /etc/passwd
Bir ortam değişkeninin değerini de arayabilirsiniz. Önemli bir not ise burada değişkeni çift tırnak içine alabiliyorken tek tırnaklar arasına alırsanız değişken değeri aranamamaktadır.
grep $HOME /etc/passwd cat /etc/passwd | grep "$HOME"
Eğer aranacak ifade’de özel karakter kullanmak isterseniz -e, -E parametrelerinden birini kullanabilirsiniz. Ya da grep -e yerine egrep kullanabilirsiniz. Özel karakterleri iyi kullanabilmek için de regular expression bilmek gerekecektir.
grep -e "r*" /etc/passwd egrep "ro.*" /etc/passwd grep -e "/bin/(ba)?sh" /etc/passwd
Aradığınız ifade ile eşleşmeyecek satırları görmek için -v (–invert-match) parametresini kullanabilirsiniz.
grep -v "/bin/false" /etc/passwd
Bir dosya içeriğindekileri satır satır yine bir dosya içerisinde aramak isterseniz bu durumda -f parametresini kullanabilirsiniz.
grep -f kullanici_listesi.txt /etc/passwd
Varsayılan olarak aranacak konumda ifadenin büyük küçük yazılmış olması arama sonucunu etkiler. Büyük küçük harfe duyarsız olsun isterseniz. -i (–ignore-case) parametresini kullanabilirsiniz.
grep -i admin /etc/passwd
Bir dosya içerisinde admin kelimesini aradığınızı düşünün. O dosya içerisinde administrator kelimesi varsa, varsayılan aramada administrator ‘de sonuç olarak döndürülür. Eğer kelime sınırları admin olan ifadeyi sonuç olarak dönsün istiyorsanız, bu durumda -w (–word-regexp) parametresini kullanabilirsiniz.
grep -w admin /etc/passwd
-w parametresiyle sözcük bazında sınırlar çizilmişti. Eğer satır sınırları çizmek isterseniz -x (–line-regexp) parametresini kullanabilirsiniz. Yani satırın tamamı bu aradığım ifade olsun diyorsanız kullanabilirsiniz.
grep -x "ntp:x:109:112::/home/ntp:/bin/false" /etc/passwd
Eşleşilen satır sayısını görmek için -c (–count) parametresini kullanabilirsiniz. Eğer birden fazla dosya girilmişse her dosya için kaç adet bulduğunu <dosya-adi>:<sayısı> şeklinde gösterir.
grep admin /etc/passwd /etc/shadow -c
Eşleşilen dosyaların sadece adını görüntülemek için -l (–files-with-matches) parametresini kullanabilirsiniz. Eşleşmeyen dosyaların adını görüntülemek için ise -L (–files-without-match) parametresini kullanabilirsiniz. Hem eşleşenleri hemde dosya adını getir demek için de -H (–with-filename), dosya adını hiç bir şekilde getirmesin istiyorsanız -h (–no-filename) , satır numarasını da göstersin istiyorsanız -n (–line-number) parametrelerini kullanabilirsiniz.
grep root /etc/passwd /etc/shadow -l grep root /etc/passwd /etc/shadow /etc/profile -L grep root /etc/passwd -h grep root /etc/passwd -H -n
Dosya bazında maksimum değer girerek aramalarda şu kadar bulduktan sonra aramayı sonlandır ve bana dosyalardaki satırları döndür diyebiliyorsunuz. Bunun için -m (–max-count=) parametresini kullanabilirsiniz.
grep root /etc/passwd /etc/shadow -m 1
Arama sonuçlarında satır bulunan ifade satır şeklinde gösterilir. Ancak siz sadece eşleşilen değeri görmek isterseniz bu durumda -o (–only-matching) parametresini kullanabilirsiniz.
grep root /etc/passwd /etc/shadow -o
grep -E ile veya egrep ile iki veya daha fazla aranacak kelime girmek için | operatörü size yardımcı olacaktır.
egrep root|admin /etc/passwd /etc/shadow grep -E root|admin /etc/passwd
Arama sonuçlarında hata mesajlarını görmemek için -s (-no-messages) parametresini kullanabilirsiniz.
find /etc/ -print | xargs grep admin --no-messages
Grep ile bir ifade aradınız ve bulunan satırın üstünde/altındaki satırları da arama sonucuna dahil etmek istiyor olabilirsiniz. Üstündekileri -B, altındaki satırları -A ifadesiyle bulabilirsiniz.
çıktı | grep gokhan -A 2 çıktı | grep kesici -B 3