Ana içeriğe geç

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)?right → right 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.