sed ve awk Komutları ile Dosya İçinde Metin Düzenleme

Sed ve awk komutları, Unix-like sistemlerde metin dosyalarını düzenlemek ve işlemek için vazgeçilmez araçlardır.

Sed ve awk komutları, Unix-like sistemlerde metin dosyalarını düzenlemek ve işlemek için vazgeçilmez araçlardır. Sed, akış düzenleyicisi olarak bilinir ve metin akışlarını satır satır işleyerek arama, değiştirme, silme veya ekleme gibi işlemleri hızlıca gerçekleştirir. Awk ise programlama diline benzer bir sözdizimiyle alan tabanlı veri işleme yapar, raporlama ve veri dönüştürme için idealdir. Bu makalede, her iki komutun dosya içi metin düzenleme pratiklerini adım adım inceleyerek, sistem yöneticileri ve geliştiriciler için somut kullanım senaryoları sunacağız. Bu araçlar, düzenli ifadelerle güçlendirildiğinde, büyük veri setlerini manuel müdahale olmadan dönüştürme gücünü sağlar.

sed Komutu ile Temel Dosya Düzenleme

Sed komutu, dosyaları doğrudan düzenlemeden önce çıktıyı ekrana yazdırarak test etmenizi sağlar; -i seçeneğiyle ise orijinal dosyayı günceller. Temel sözdizimi “sed ‘komut’ dosya.txt” şeklindedir. Örneğin, bir dosyadaki tüm “eski” kelimelerini “yeni” ile değiştirmek için “sed s/eski/yeni/g dosya.txt” komutunu kullanın. Burada s komutu substitution (değiştirme) anlamına gelir, g bayrağı global işlemi belirtir. Düzenli ifadeler ekleyerek daha karmaşık desenleri yakalayabilirsiniz, örneğin “sed ‘s/^[0-9]\+/NUM/g’ dosya.txt” ile satır başındaki sayıları NUM ile değiştirirsiniz.

Pratik bir senaryoda, log dosyalarındaki hataları filtrelemek için sed’i kullanın. “sed ‘/ERROR/d’ hata.log” komutu, ERROR içeren satırları siler ve temiz çıktıyı üretir. Dosyayı kalıcı değiştirmek için “sed -i ‘/ERROR/d’ hata.log” uygularsınız. Bu işlem, yedekleme mantığıyla birleştirildiğinde güvenli hale gelir: “sed -i.bak ‘/ERROR/d’ hata.log”. Sed’in adresleme özelliğiyle belirli satır aralıklarını hedefleyin, örneğin “sed ‘5,10s/eski/yeni/g’ dosya.txt” 5-10. satırlar arası değişiklik yapar. Bu yöntemler, betik dosyalarında otomasyon için temel oluşturur.

sed’in Gelişmiş Özellikleri ve Örnekler

Satır Ekleme ve Silme İşlemleri

Sed ile satır eklemek için i (insert) veya a (append) komutlarını kullanın. “sed ‘3i\Yeni Satır’ dosya.txt” 3. satırın önüne “Yeni Satır” ekler. Silme için d komutu idealdir: “sed ‘1d;$d’ dosya.txt” ilk ve son satırları kaldırır. Bu işlemler, CSV dosyalarını temizlerken faydalıdır; örneğin başlık satırını kaldırmak için “sed ‘1d’ veri.csv”. Çoklu komut zincirlemek adına -e bayrağını ekleyin: “sed -e ‘1d’ -e ‘s/eski/yeni/g’ dosya.txt”. Bu yaklaşım, veri ön işleme akışlarında verimliliği artırır ve manuel düzenlemeleri minimize eder.

Çoklu Dosya ve Düzenli İfade Kullanımı

Sed, birden fazla dosyayı işleyebilir: “sed -i ‘s/hata/basarili/g’ *.log”. Düzenli ifadelerle e-posta adreslerini anonimleştirmek için “sed -E ‘s/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/EMAIL/g’ dosya.txt” uygularsınız. -E bayrağı genişletilmiş regex’i etkinleştirir. Bu komut, gizlilik odaklı veri işleme için pratiktir. Test aşamasında çıktıyı dosyaya yönlendirin: “sed ‘s/eski/yeni/g’ dosya.txt > yeni_dosya.txt”. Sed’in tutma tamponu (hold space) ile gelişmiş işlemler yapın, örneğin “sed ‘1h;1d; $G’ dosya.txt” ilk satırı sona ekler. Bu teknikler, raporlama betiklerinde vazgeçilmezdir.

awk Komutu ile Alan Tabanlı Metin İşleme

Awk, metin dosyalarını alanlara (boşluk veya virgülle ayrılmış) böler ve $1, $2 gibi değişkenlerle erişim sağlar. Temel sözdizimi “awk ‘pattern {action}’ dosya.txt”dir. Örneğin, “awk ‘{print $1, $NF}’ dosya.txt” her satırın ilk ve son alanını yazdırır. OFS=”,” ile çıktı ayıracını değiştirin: “awk ‘BEGIN{OFS=”,”} {print $1,$2}’ dosya.txt”. Bu, veri dönüştürmede güçlüdür; log dosyalarından IP adreslerini çıkarmak için “awk ‘{print $1}’ access.log | sort | uniq -c” kullanın.

Awk ile koşullar ekleyin: “awk ‘$3 > 100 {print $0}’ skorlar.txt” üçüncü alandan büyük 100 olan satırları filtreler. Hesaplama için “awk ‘{toplam += $2} END {print toplam}’ sayilar.txt” toplamı verir. Dosyaları birleştirin: “awk ‘NR==FNR{a[$1]=$2;next} {print $1, a[$1]}’ dict.txt data.txt”. Bu pattern matching, veritabanı benzeri sorgular için uygundur. Awk betiklerini dosyaya kaydederek tekrarlanabilirlik sağlayın.

Sed ve awk komutlarını ustalıkla kullanmak, dosya tabanlı iş akışlarınızı hızlandırır ve hata riskini azaltır. Pratikte, bu araçları betiklerle birleştirerek otomasyon çözümleri geliştirin; örneğin cron işleriyle günlük log temizliği yapın. Deneme yanılma ile düzenli ifadeleri öğrenin ve man sayfalarını (man sed, man awk) referans alın. Bu beceriler, profesyonel ortamda verimlilik ve güvenilirlik sağlar, büyük ölçekli metin işlemlerini kolaylaştırır.

Kategori: Sunucu Yönetimi
Yazar: Lorem
çerik: 558 kelime
Okuma Süresi: 4 dakika
Zaman: Bugün
Yayım: 24-02-2026
Güncelleme: 24-02-2026