Grep Komutu
Grep düz metin veri kümelerinde düzenli bir ifadeyle eşleşen satırları aramak için kullanılan bir komut satırı programıdır. Yani dosya içeriklerini filtreleme gibi düşünebilirsiniz. Grep başlangıçta Unix işletim sistemi için geliştirilmiştir, ancak şimdi tüm Unix benzeri işletim sistemleri için mevcuttur.
Örneğin, bash kabuğu ile sisteme giriş yapabilen tüm kullanıcıları bulalım.
grep bash /etc/passwd

Yukarıda görselde bash yazan yerleri kırmızı renkle işaretlemiş oldu. Komut çok basit ve kullanışlıdır. Bazı durumlarda aradığımız desenin dosya içinde kaç tane olduğunu görmek isteyebiliriz. Bu kısımda -c opsiyonu isteklerimizi karşılayacaktır. Yukarıdaki görselde 4 kullanıcının bash kabuğunu kullanabildiğini görmüştük. Şimdi de doğrulamış olduk.
Bu seçenek sayesinde hangi kelimenin daha az kullanıldığını da bulabilirsiniz.
grep -c bash /etc/passwd

Yine farklı bir istek olarak aradığımız bilgiler ile eşleşen satırların numaralarını görmek isteyebiliriz. -n opsiyonu’da bize komutun orjinal satır numaralarını gösterecektir.
grep -n bash /etc/passwd

-v opsiyonu ise işlemi tam tersine çevirir. Yani dosyada bash bulunmayan tüm satırları görüntüler.
grep -v bash /etc/passwd

Linux dünyasında büyük/küçük harf duyarlılığı vardı. Grep komutunu kullanırken herhangi bir ayrım yapmamasını -i opsiyonu ile sağlayabiliriz.
grep -i bash /etc/passwd

Güzel bir opsiyondan daha bahsedelim. Grep komutu ile yalnızca tam kelimeyi oluşturacak şekilde arama yapabilirsiniz. Aşağıda ki çıktıyı karşılaştıralım. Varsayılan olarak kar geçen tüm satırları arıyor. -w opsiyonu ile sadece kar kelimesini aramaktadır.
grep -w bash /etc/passwd

recursive seçeneği ile belirtilen dizinde ve tüm alt dizinler içersinde bu aramayı yapabilirsiniz. -r seçeği veya rgrep aracını kullanabilirsiniz. Aşağıdaki örnekte etc dizini içindeki tüm dosyalarda PermitRoot ile başlayan tüm kelimeler aranmıştır.
sudo rgrep PermitRoot* /etc/

Temel Normal İfadeler
Grep komutu sadece normal ifadeleri destekleyen birçok komutlardan birisidir. Kısaca bu karakterlerden bahsedip makaleyi tamamlayalım.
. Dönem Karakteri
Herhangi bir tek karakter. En kullanışlı ifadelerden bir tanesidir. Yeni satır karakteri dışında herhangi bir karakterlerle eşleşir. Örneklerle gitmek daha anlaşılır olacaktır. Bir kelime arıyoruz ama ilk ve son harfini hatırlıyoruz diyelim. Bu gibi durumlarda eksik olan harfleri . (nokta) ile kendisi otomatik tamamlayacaktır.
grep ‘r..t’ rain.txt


Diğer bir örnekte ise en az 5 karakter içerin tüm kelimeleri bu diyebiliriz.

[ ] Köşeli Ayraç Karakterleri
Köşeli parantezler, parantez içinde yer alan olası karakterler veya aralığından tek bir karakterle eşleşir. Aralık doğru sırada olduğu sürece olası her karakter ve ya bir aralık listelenebilir. Aşağıda bir çok örnek verdim.
Belirli karakterleri arayabilirsiniz.

Belirli karakterler ile istediğiniz karakterleri eşleyebilirsiniz.

Alfabetik olarak bir aralık verebilirsiniz a-d gibi ama d-a benzeri bir aralık olmadığı için çalışmayacaktır.

Aynı şekilde bir sayı bulunan tüm satırları veya bir kalıp 0-9 kullanabilirsiniz.

Grep The Best
Bir dosyanın işe yarayan kısımlarını yüzlerce satır içinde sade ve temiz kısımları almak için aşağıdaki komut satırını kullanabiliriz. Boşluklu satırları ve # satırları almaz sadece işinize yarayacak satırların çıktılarını alabilirsiniz.
grep -v -e '^[[:space:]]*$' -e "#" /dosya
