Skip to main content

GREP Komutu ve Düzenli İfadeler (Regex) ile Etkili Metin Araması 🔎

Bu Rehberde Ne Öğreneceksiniz?

Bu rehber, Linux’un en güçlü metin arama aracı olan grep komutunu baştan sona öğretir.
Temel kelime eşleştirmeden başlayarak, düzenli ifadeler (regex) ile karmaşık arama kalıpları oluşturmayı öğreneceksiniz.
Ayrıca grep -E (Genişletilmiş Regex) ve grep -P (Perl uyumlu Regex) gibi gelişmiş seçenekleri pratik örneklerle keşfedeceksiniz.


🧠 1. İçerik Analizi (Teknik Özet)

Ana Teknik Konu:
Linux’ta grep komutunun düzenli ifadeler (Regular Expressions) ile ileri düzeyde kullanımı.

Çözülen Problem:
Büyük metin dosyalarında veya log çıktılarında hızlı, esnek ve hassas arama yapma ihtiyacı.

İzlenen Adımlar:

  1. Temel grep kullanımı ve yaygın seçenekler (-i, -v, -n)
  2. Temel regex sembollerini öğrenme (^, $, [], *)
  3. Kaçış karakterleri (\) ile özel sembolleri literal olarak arama
  4. Genişletilmiş Regex (grep -E) ile gruplama () ve seçim | kullanımı
  5. Perl uyumlu Regex (grep -P) ile lazy matching ve lookaround ifadeleri
  6. Performans, taşınabilirlik ve pratik kullanım örnekleri

⚙️ 2. GREP Nedir ve Temel Kullanımı

grep (Global Regular Expression Print), girdi aldığı metinde belirtilen deseni arar ve eşleşen satırları yazdırır.

🔧 Gereksinimler

Denemeler için örnek lisans dosyalarını aşağıdaki komutlarla hazırlayabilirsiniz:

# Ubuntu'da GPL-3 dosyasını ana dizine kopyala.
cp /usr/share/common-licenses/GPL-3 .

# Diğer sistemlerde indir:
curl -o GPL-3 https://www.gnu.org/licenses/gpl-3.0.txt

🔍 3. Temel Eşleştirme


# "GNU" içeren satırları bulur.
grep "GNU" GPL-3

Bu komut, GNU geçen her satırı ekrana yazdırır.


🧩 4. Sık Kullanılan Seçenekler

SeçenekBayrakAçıklama
Büyük/küçük harf farkını yok say-iHarf duyarsız arama yapar.
Eşleşmeyen satırları bul-vKalıbı içermeyen satırları döndürür.
Satır numarasını göster-nEşleşen satırların numarasını gösterir.

# "license" kelimesinin her tür varyasyonunu bulur.
grep -in "license" GPL-3

Bu komut license, LICENSE, License gibi varyasyonları bulur.


🧱 5. Temel Regex (Regular Expressions)

1️⃣ Çapalar (Anchors)


# Satır başında "GNU" arar.
grep "^GNU" GPL-3

# "and" ile biten satırları arar.
grep "and$" GPL-3

2️⃣ Herhangi Bir Karakter Eşleştirme


# "cept" öncesinde iki karakter olan kelimeleri bulur.
grep "..cept" GPL-3

3️⃣ Köşeli Parantezler


# "too" veya "two" içeren satırları bulur.
grep "t[wo]o" GPL-3

# Büyük harfle başlayan satırları bulur.
grep "^[A-Z]" GPL-3

4️⃣ Kaçış (Escaping)


# Büyük harfle başlayıp nokta ile biten satırları bulur.
grep "^[A-Z].*\.$" GPL-3

. ifadesi literal nokta karakterini arar.


⚡ 6. Genişletilmiş Regex (grep -E)

YapıAnlamıÖrnek
( )Gruplama(copy)?rightright veya copyright
``Alternatif eşleşme
+En az bir tekrarfree+
{n,m}Belirli tekrar aralığı[AEIOU]{3} → 3 sesli harf içerir

grep -E "(GPL|General Public License)" GPL-3

🔬 7. Perl Uyumlu Regex (grep -P)

GNU grep, -P ile Perl Compatible Regular Expressions (PCRE) motorunu etkinleştirir.

Lazy Matching


# En kısa eşleşmeleri bulur.
grep -P -o "<.*?>" tags.html
Lookahead

# "document" kelimesi ile takip edilen "license" eşleşmelerini bulur.
grep -P -o "license(?= document)" GPL-3

🧰 8. Pratik Kullanım Senaryoları

SenaryoKomutAçıklama
Log hatası aramagrep "ERROR" /var/log/syslogHata içeren satırları bulur.
Sıkıştırılmış dosya aramazgrep "timeout" /var/log/nginx/*.gz.gz dosyaları açmadan arar.
Kaynak kodda fonksiyon bulmagrep -r "calculateTotal" src/Alt dizinlerde arama yapar.
URL tespitigrep -E "https?://[^ ]+" data.txtMetin içindeki bağlantıları bulur.
CI/CD log filtrelemegrep "ERROR" build.log | grep -v "DEPRECATED"Uyarıları gizleyip hataları gösterir.

⚙️ 9. Performans ve Taşınabilirlik

SeçenekAçıklama
--line-bufferedCanlı log akışında anlık çıktı sağlar.
--mmapBüyük dosyalarda belleğe haritalı okuma yapar.
-Z + xargs -0Boşluk içeren dosya adlarında güvenli pipe sağlar.
--labelGirdi kaynağını özel adla etiketler.

💡 macOS’ta grep -P çalışmazsa, brew install grep komutuyla GNU sürümünü kurabilirsiniz.


❓ 10. Sıkça Sorulan Sorular (SSS)

1. grep ile birden fazla dosyada arama yapabilir miyim?


grep "pattern" *.txt

2. Eşleşmeyen satırları nasıl bulurum?


grep -v "error" logfile.txt

3. Büyük/küçük harf farkını nasıl kapatırım?


grep -i "linux" file.txt

4. Çok satırlı kalıpları arayabilir miyim?

Hayır, grep satır bazında çalışır. Çok satırlı desenler için:


perl -0777 -ne 'print if /pattern/s' file.txt

5. Sıkıştırılmış dosyalarda arama?


zgrep "ERROR" /var/log/syslog.2.gz

🚀 Sonuç

Bu rehberde, grep komutunun temel kullanımlarını, regex desteğini ve gelişmiş özelliklerini öğrendiniz. Artık log analizlerinden veri filtrelemeye kadar her türlü metin aramasında daha hızlı ve güvenli çalışabilirsiniz.

⚙️ Ek Öneri: Büyük projelerde daha hızlı tarama için ripgrep (rg) veya ag komutlarını deneyin.

🔒 Tüm bu teknikleri Rabisu Bulut altyapınızda test ederek log analizi ve güvenlik süreçlerinizi profesyonel seviyeye taşıyabilirsiniz.