grep, ripgrep ve Yapay Zeka Destekli Metin Arama

grep'in temellerinden ripgrep'e, AI agent'ların metin arama araçlarını kullanım biçimlerine ve semantic search gibi yeni nesil alternatiflere uzanan kapsamlı bir rehber.

Ceyhun Enki Aksan
Ceyhun Enki Aksan Girişimci, Maker

TL;DR

AraçKullanım AlanıHızAI Agent Uyumu
grepMinimal ortamlar, basit boru hatlarıTemelDüşük (gürültülü çıktı)
ripgrep (rg)Günlük geliştirme, büyük kod tabanları10x hızlıYüksek (tüm agent’lar kullanıyor)
ast-grep (sg)Yapısal kod araması, refactoringHızlıMCP entegrasyonu mevcut
mgrepSemantic arama, doğal dil sorgularıOrta2x daha az token tüketimi

Elinizin altında bulunmasında, komut satırı işlemlerinde işinizin kolaylıkla çözülebilmesinde oldukça yer sahibi olan bir komuttan bahsedeceğim; grep. Bu yazının ilk versiyonu 2019 yılında yayınlanmıştı. O tarihten bu yana geliştirici araçları ekosisteminde ve özellikle yapay zeka destekli geliştirme süreçlerinde önemli değişiklikler yaşandı. Bu güncelleme ile grep’in temellerinden başlayarak, ripgrep gibi modern alternatifleri, AI coding agent’ların bu araçları nasıl kullandığını ve yeni nesil semantic arama çözümlerini ele alacağım.

grep Temelleri

grep yani evrensel düzenli ifade yazıcısı (Global Regular Expression Printer), belirtilen örgü (pattern) bağlamında bir metin yığını içerisinden seçme ve işaretleme yapmamızı sağlar. Girilen şablon belirtilen yol içerisinde işlenir, şablona uygun sonuçlar işaretlenerek listelenir. Tek başına veya borularla (|, pipe) kullanılarak yetenekleri geliştirilebilir.

En yalın kullanımı:

grep '[aranacak-metin]' [dosya-yolu]

Sık Kullanılan Parametreler

ParametreAçıklamaÖrnek
-iBüyük/küçük harf duyarsızgrep -i 'error' log.txt
-rAlt dizinlerde özyinelemeli aramagrep -r 'TODO' src/
-nSatır numarası göstergrep -n 'function' app.js
-vEşleşmeyenleri göster (hariç tutma)grep -v 'debug' log.txt
-lYalnızca dosya adlarını listelegrep -l 'import' *.ts
-cEşleşme sayısını göstergrep -c 'error' log.txt
-wTam kelime eşleştirmegrep -w 'return true' *.php
-oYalnızca eşleşen kısmı göstergrep -o 'v[0-9]\+' changelog
-A NEşleşme sonrası N satırgrep -A 3 'error' log.txt
-B NEşleşme öncesi N satırgrep -B 2 'error' log.txt
-C NEşleşme etrafında N satırgrep -C 5 'error' log.txt
-EGenişletilmiş regexgrep -E 'err(or|eur)' log.txt
-FSabit string (regex yok)grep -F '$variable' code.sh

Boru Hattı (Pipe) Kullanımı

grep’in gücü, diğer komutlarla zincirlenmesinde ortaya çıkar:

# Çalışan süreçlerde nginx ara
ps aux | grep 'nginx'

# Log dosyasında 500 hatalarını sayfa sayfa görüntüle
grep '500' /var/log/access.log | more

# Belirli uzantıdaki dosyalarda izin bilgilerini kontrol et
ls -l ~/var/www/html/*.jpg | grep rwxrwxrwx

Birden fazla kelimeyi aramak için:

grep -i 'spam\|hashes' access_log.txt      # yöntem 1
grep -iE 'spam|hashes' access_log.txt       # yöntem 2
grep -i -e 'spam' -e 'hashes' access_log.txt # yöntem 3

GNU grep’in en güncel sürümü 3.12 (Nisan 2025) olup, 100.000’den fazla giriş içeren dizinlerde arama yapılamaması sorunu düzeltilmiştir.


Modern Alternatifler: Neden Yeni Araçlara İhtiyaç Duyuldu?

grep, Unix felsefesinin temel taşlarından biri olarak onlarca yıldır görevini yerine getirmekte. Ancak günümüzün devasa kod tabanları, çok çekirdekli işlemciler ve yapay zeka destekli geliştirme süreçleri yeni gereksinimleri beraberinde getirdi:

  • Performans: grep tek çekirdek kullanır. Yüz binlerce dosya içeren projelerde bu yavaş kalmakta.
  • Akıllı varsayılanlar: node_modules, dist, .git gibi dizinlerin manuel olarak hariç tutulması gerekmekte.
  • Unicode ve modern regex: Günümüz kod tabanlarında çoklu dil desteği ve gelişmiş regex gereksinimleri artmakta.

ripgrep (rg)

ripgrep, Andrew Gallant tarafından Rust dilinde geliştirilen ve grep’in modern alternatifi olarak konumlanan bir arama aracıdır1. GitHub’da 59.700’den fazla yıldıza sahip olan ripgrep, en güncel sürümü olan 15.1.0 (Ekim 2025) ile aktif geliştirme sürecini devam ettirmekte.

ripgrep’i öne çıkaran temel özellikler:

  • Çok çekirdekli paralel arama: Arama işlemi CPU çekirdekleri arasında otomatik olarak dağıtılır
  • Otomatik .gitignore desteği: .gitignore, .ignore dosyalarını okuyarak node_modules, build gibi dizinleri varsayılan olarak atlar
  • Gelişmiş regex motoru: Sonlu otomat tabanlı, SIMD optimizasyonlu Rust regex motoru
  • Unicode desteği: Tam Unicode karakter sınıfı desteği
  • Jujutsu VCS tanıma: 15.0.0 sürümüyle birlikte Jujutsu versiyon kontrol sistemi deposu tanıma desteği

Performans Karşılaştırması

Linux kernel kaynak kodunda (4.640 dizin, 178 .gitignore dosyası) yapılan karşılaştırma2:

İşlemGNU grepripgrepFark
Basit örgü araması~0.67s~0.06s11x hızlı
Satır numaralı arama (-n)9.48s1.66s5.7x hızlı

Temel Kullanım

ripgrep’in komut satırı arayüzü, grep kullanıcıları için tanıdık gelmekte:

# Basit arama (varsayılan olarak özyinelemeli ve .gitignore uyumlu)
rg 'TODO'

# Dosya türü filtresi
rg --type ts 'interface'
rg --glob '*.tsx' 'useState'

# Sabit string araması (regex yok, daha hızlı)
rg -F '$variable'

# Bağlam ile arama
rg -C 3 'error'

# Yalnızca dosya adları
rg -l 'import.*lodash'

# Çoklu örgü
rg -e 'TODO' -e 'FIXME' -e 'HACK'

# JSON çıktı formatı (programatik kullanım için)
rg --json 'pattern'

Diğer Alternatifler

AraçDilSon SürümGitHub YıldızıDurum
ripgrep (rg)Rust15.1.0 (Ekim 2025)59.700+Aktif
ackPerl3.9.0 (Mayıs 2025)799Aktif
ag (Silver Searcher)C2.2.0 (Ağustos 2018)27.200+Bakımsız
ugrepC++7.5 (2025)3.000+Aktif
GNU grepC3.12 (Nisan 2025)N/AAktif (yavaş tempo)

ack, Perl tabanlı bir arama aracı olarak aktif geliştirilmeye devam etmekte. 3.9.0 sürümüyle birlikte --and, --or, --not gibi Boolean arama operatörleri sunmakta; bu özellik grep ve ripgrep’te doğrudan bulunmamakta3.

ag (The Silver Searcher), grep’ten ripgrep’e giden yolda önemli bir ara adım olmuştur. Ancak 2018’den bu yana yeni bir sürüm yayınlanmamış olup bakımsız durumdadır.

ugrep, GNU grep ile tam uyumlu bir alternatif olarak öne çıkmakta. Etkileşimli TUI arayüzü, sıkıştırılmış dosyalarda (gz, bz2, xz, zstd) ve arşivlerde (zip, 7z, tar) arama yapabilme, PDF ve Word belgelerinde arama gibi benzersiz özellikleri sunmakta4.


AI Agent’lar ve Metin Arama

Yapay zeka destekli kodlama araçlarının yaygınlaşması, metin arama ekosisteminde yeni bir katman oluşturdu. Bir AI agent’ın bir kod tabanını “anlaması” için ilk adım, ilgili dosyaları ve kod parçacıklarını bulmaktır. “Bu fonksiyon nerede tanımlanmış?”, “Bu API anahtarı hangi dosyada kullanılıyor?” gibi soruların cevabını bulmak için metin arama araçları hayati öneme sahiptir.

Agent’lar Hangi Aracı Kullanıyor?

Tüm büyük AI coding agent’lar, dahili arama motoru olarak ripgrep kullanmakta:

AgentArama AracıKaynak
Claude Coderipgrep (Grep tool)GitHub issue #73’te doğrulandı5
GitHub Copilot CLIripgrep (Kasım 2025’te dahil edildi)GitHub Blog6
OpenAI Codexripgrep (birincil), grep (yedek)GitHub deposu7
Aidergrep-ast (tree-sitter destekli)GitHub deposu8

Claude Code’un Grep aracı, ripgrep’i üç farklı çıktı modunda kullanmakta: content (eşleşen satırlar), files_with_matches (dosya yolları) ve count (eşleşme sayıları). Bu modlar, agent’ın ihtiyacına göre çıktı miktarını kontrol etmekte.

AI Agent’ların Yaşadığı Sorunlar

1. Gürültülü Sonuçlar (Noise)

# Sorunlu: Tüm projede arama
grep -r 'config' .
# node_modules, dist, .next içinde binlerce gereksiz sonuç

Bu yaklaşım, agent’ın bağlamını kirletir ve token limitlerini hızla tüketir. ripgrep’in .gitignore desteği bu sorunu büyük ölçüde çözmekte; ancak yeterli olmadığı durumlar da bulunmakta.

2. Bağlam Eksikliği

grep yalnızca eşleşen satırı döndürür. -C parametresi ile çevre satırlar alınsa dahi, fonksiyonun veya sınıfın tamamını anlamak için yeterli olmayabilir. Aider’ın geliştirdiği grep-ast aracı, tree-sitter parser kullanarak eşleşen satırın ait olduğu fonksiyon, sınıf veya metodu bağlamıyla birlikte göstermekte8.

3. Regex Hataları

AI agent’lar bazen hatalı regex desenleri oluşturabilir. Özellikle ., *, (, ) gibi özel karakterlerin escape edilmesi konusunda tutarsızlıklar gözlemlenmekte. Bu nedenle kesin string araması gereken durumlarda -F (fixed string) parametresi tercih edilmelidir:

# Hatalı olabilecek regex yerine sabit string
rg -F 'interface{}' --type go

4. Token Tüketimi

OpenAI Codex deposundaki tartışmalarda belirtildiği üzere, “grep veya dosya adı sezgiselleri, çok dilli depolarda, yeniden adlandırılmış tanımlayıcılarda veya kavramların sorgudan farklı ifade edildiği durumlarda yetersiz kalmakta”7. Bu durum, semantic arama araçlarına olan ihtiyacı doğurmakta.

Çözümler ve En İyi Pratikler

Aramayı daraltmak: Tüm proje yerine belirli dizin ve dosya türleriyle sınırlamak:

# Tüm projede aramak yerine
rg 'handleSubmit' src/components/ --glob '*.tsx'

Sabit string araması: Regex gerektirmeyen durumlarda -F kullanmak:

rg -F 'process.env.DATABASE_URL'

Çıktı modunu seçmek: Önce dosya listesi, sonra içerik araması yaparak iki aşamalı ilerlemek:

# Önce hangi dosyalarda var?
rg -l 'useAuth'
# Sonra o dosyalarda detaylı ara
rg -C 3 'useAuth' src/hooks/useAuth.ts

Yeni Nesil Araçlar: Metin Aramanın Ötesi

2025-2026 döneminde metin arama ekosistemi üç katmanlı bir yapıya evrilmekte:

Katman 1: Kesin Metin Eşleştirme (grep, ripgrep)

Hızlı, güvenilir, yanlış pozitif üretmeyen klasik metin araması. Bilinen bir string veya regex desenini aramak için hala en doğru seçenek.

Katman 2: Yapısal Kod Araması (ast-grep)

ast-grep (sg), metin tabanlı arama yerine Abstract Syntax Tree (Soyut Sözdizim Ağacı) üzerinde yapısal arama gerçekleştirir9. tree-sitter parser kullanarak kodun yapısını anlamakta ve metin eşleştirmenin ötesinde sorgular çalıştırabilmekte:

# "console.log" çağrılarını bul (yalnızca fonksiyon çağrısı olarak, string içindekiler hariç)
sg -p 'console.log($$$)' --lang typescript

# try-catch bloğu olmayan async fonksiyonları bul
sg -p 'async function $NAME($$$) { $$$ }' --lang javascript

ast-grep, AI agent entegrasyonu için MCP (Model Context Protocol) sunucusu da sağlamakta. Bu sayede Claude Code veya Cursor gibi araçlar, yapısal kod araması yapabilmekte.

Katman 3: Semantic Arama (mgrep, grepai)

mgrep, Mixedbread AI tarafından geliştirilen ve yapay zeka embedding’leri ile çalışan bir semantic arama aracıdır10. Doğal dil sorguları ile kod, metin ve hatta PDF dosyalarında arama yapabilmekte:

# Doğal dil ile arama
mgrep "kullanıcı kimlik doğrulama akışı"

# Git deposunu otomatik indeksle
mgrep watch

mgrep ile Claude Code entegrasyonunda yapılan karşılaştırmalarda, mgrep tabanlı iş akışlarının grep tabanlı iş akışlarına göre yaklaşık 2 kat daha az token tükettiği raporlanmakta11.

grepai ise tamamen yerel çalışan bir semantic kod arama aracı olarak vektör embedding’leri kullanmakta. Doğal dil sorguları, kavramsal benzerlik araması ve çağrı grafiği izleme gibi özellikler sunmakta. Dahili MCP sunucusu ile AI agent entegrasyonu sağlamakta12.


Pratik Rehber: Hangi Durumda Hangi Araç?

SenaryoÖnerilen AraçNeden
Minimal sunucu, Docker imajıgrepEk kurulum gerektirmez
Basit boru hattı süzmegrepps aux | grep nginx
Günlük geliştirme aramasırgHız, .gitignore desteği
Büyük kod tabanırgParalel arama, akıllı filtreleme
AI agent komuturgTüm agent’lar destekliyor
Kod yapısı aramasıast-grepAST tabanlı yapısal sorgular
Refactoringast-grepYapısal bul-değiştir
Kavramsal aramamgrep / grepaiDoğal dil sorguları
Sıkıştırılmış dosya aramasıugrepzip, gz, PDF desteği
Boolean kombinasyonlarack--and, --or, --not

Kurulum

# ripgrep
brew install ripgrep        # macOS
apt install ripgrep          # Debian/Ubuntu
choco install ripgrep        # Windows

# ast-grep
npm install -g @ast-grep/cli
brew install ast-grep

# mgrep
pip install mgrep

# ugrep
brew install ugrep

Sonuç

grep, Unix felsefesinin temel taşlarından biri olarak değerini korumakta. Ancak modern geliştirme iş akışlarında ripgrep’in hız ve akıllı varsayılan davranışları, onu neredeyse her senaryoda daha iyi bir seçenek haline getirmekte. AI coding agent’ların yaygınlaşmasıyla birlikte metin arama araçlarının verimli kullanımı, hem insanlar hem de yapay zeka ajanları için kritik bir beceri haline geldi.

Metin arama ekosistemi, kesin eşleştirme (ripgrep), yapısal arama (ast-grep) ve semantic arama (mgrep) olmak üzere üç katmanlı bir yapıya evrilmekte. Bu katmanların her biri, farklı bir ihtiyaca yanıt vermekte ve birbirini tamamlamakta.

Bu yazıyı hazırlarken AI agent’ların arama operasyonlarında yaşadığı sorunları daha yakından inceledim: built-in grep araçlarındaki false negative’ler, context window’u tüketen gürültülü sonuçlar, hallucinate edilen dosya yolları. Bu sorunların her biri tek başına sinir bozucu; bir araya geldiklerinde ise agent’ın ürettiği kodun kalitesini doğrudan etkileyen bir domino etkisi yaratıyor. Bir sonraki yazıda bu problemleri detaylıca ele aldım ve çözüm olarak geliştirdiğim local semantic code search MCP sunucusunu paylaştım.

Footnotes

  1. ripgrep GitHub Repository
  2. ripgrep is faster than grep, ag, git grep, ucg, pt, sift
  3. ack: Beyond grep
  4. ugrep: Ultra fast grep
  5. Claude Code - ripgrep confirmation
  6. GitHub Copilot CLI Changelog, November 2025
  7. OpenAI Codex - Semantic Search Proposal 2
  8. Aider grep-ast 2
  9. ast-grep: Structural Code Search
  10. mgrep: Semantic grep by Mixedbread AI
  11. Boosting Claude: Faster Code Analysis with mgrep
  12. grepai: Local Semantic Code Search