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:
- Temel grep kullanımı ve yaygın seçenekler (
-i,-v,-n) - Temel regex sembollerini öğrenme (
^,$,[],*) - Kaçış karakterleri (
\) ile özel sembolleri literal olarak arama - Genişletilmiş Regex (
grep -E) ile gruplama()ve seçim|kullanımı - Perl uyumlu Regex (
grep -P) ile lazy matching ve lookaround ifadeleri - 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çenek | Bayrak | Açıklama |
|---|---|---|
| Büyük/küçük harf farkını yok say | -i | Harf duyarsız arama yapar. |
| Eşleşmeyen satırları bul | -v | Kalıbı içermeyen satırları döndürür. |
| Satır numarasını göster | -n | Eş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 tekrar | free+ |
{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ı
| Senaryo | Komut | Açıklama |
|---|---|---|
| Log hatası arama | grep "ERROR" /var/log/syslog | Hata içeren satırları bulur. |
| Sıkıştırılmış dosya arama | zgrep "timeout" /var/log/nginx/*.gz | .gz dosyaları açmadan arar. |
| Kaynak kodda fonksiyon bulma | grep -r "calculateTotal" src/ | Alt dizinlerde arama yapar. |
| URL tespiti | grep -E "https?://[^ ]+" data.txt | Metin içindeki bağlantıları bulur. |
| CI/CD log filtreleme | grep "ERROR" build.log | grep -v "DEPRECATED" | Uyarıları gizleyip hataları gösterir. |
⚙️ 9. Performans ve Taşınabilirlik
| Seçenek | Açıklama |
|---|---|
--line-buffered | Canlı log akışında anlık çıktı sağlar. |
--mmap | Büyük dosyalarda belleğe haritalı okuma yapar. |
-Z + xargs -0 | Boşluk içeren dosya adlarında güvenli pipe sağlar. |
--label | Girdi 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.