Ana içeriğe geç

✍️ Linux’ta sed Komutu Ustalaşma Rehberi: Hızlı Metin Düzenleme

sed (Stream Editor), Linux’ta metinleri düzenlemek ve dönüştürmek için kullanılan güçlü bir komut satırı aracıdır.
Bir dosyayı açmadan, satır satır okuyarak arama, değiştirme, silme veya ekleme işlemleri yapmanıza olanak tanır.
Bu özellikleriyle özellikle otomasyon betikleri ve yapılandırma dosyalarının toplu düzenlenmesi için idealdir.


💡 Bu Rehberde Ne Öğreneceksiniz​

  • sed komutunun yapısını ve sözdizimini
  • Arama ve değiştirme işlemlerini (s/eski/yeni/)
  • Yerinde düzenleme (-i ve -i.bak seçenekleri)
  • Satır silme (d), yazdırma (p) ve desen eşleştirme işlemlerini
  • Gelişmiş sed kullanımını: düzenli ifadeler, aralık işlemleri, yedekleme

⚙️ 1. sed Komutunun Temelleri​

Temel Sözdizimi​

sed [seçenekler] 'komut' dosya

[seçenekler]: Komutun davranışını belirler (-i, -n gibi).

'komut': Uygulanacak düzenleme işlemi (s, d, p vb.).

dosya: İşlenecek dosyanın yoludur.

Örnek:


sed 's/Linux/Unix/' system.txt

Bu komut, system.txt dosyasındaki her satırda ilk "Linux" kelimesini "Unix" ile değiştirir.


🧰 2. En Sık Kullanılan sed Seçenekleri​

SeçenekAçıklama
-iYerinde düzenleme — dosyayı doğrudan kaydeder
-i.bakDüzenleme öncesi .bak uzantılı yedek oluşturur
-nOtomatik çıktı bastırmayı engeller
-eAynı çağrıda birden fazla komut çalıştırır
-r veya -EGelişmiş (extended) regex desteği sağlar

🔍 3. Arama ve Değiştirme İşlemleri​

Temel Kullanım (s Komutu)​


sed 's/eski/yeni/' dosya.txt

Satırda bulunan ilk "eski" kelimesini "yeni" ile değiştirir.

Satırdaki Tüm Eşleşmeleri Değiştirme​


sed 's/Linux/GNU\/Linux/g' metin.txt

g bayrağı tüm satır boyunca eşleşmeleri değiştirir.

Büyük-Küçük Harf Duyarsız Değiştirme​


sed 's/admin/user/I' config.txt

“Admin”, “ADMIN” veya “admin” fark etmeksizin değiştirme yapar.


💾 4. Yerinde Düzenleme (In-place Editing)​

Kalıcı Düzenleme​


sed -i 's/eski_domain/rabisu.cloud/g' vhost.conf

Dosyayı doğrudan değiştirir ve kaydeder.

Yedekleme ile Düzenleme​


sed -i.yedek 's/test_ortami/canli_sistem/g' env.yaml

env.yaml dosyasını düzenler, eski versiyonu env.yaml.yedek olarak saklar.


✂️ 5. Satır Tabanlı İşlemler​

İşlemKomutAçıklama
Belirli satırı silsed '2d' log.txt2. satırı siler
Desene göre satır silsed '/hata/d' log.txt"hata" içeren satırları siler
Satır aralığını yazdırsed -n '1,3p' log.txt1–3. satırları yazdırır
Boş satırları silsed '/^$/d' veriler.txtTüm boş satırları kaldırır

🧩 6. Gelişmiş sed Kullanımları​

Satır Başında veya Sonunda Desen Eşleştirme​


sed 's/^root/yonetici/' passwd.txt # Satır başında
sed 's/$/\//' klasorler.txt # Satır sonunda

Belirli Satır Numarasında Değiştirme​


sed '4 s/url/link/' config.json

Sadece 4. satırdaki ilk “url” ifadesini değiştirir.

Satır Aralığına Göre İşlem​


sed '1,5 s/Linux/Unix/' file.txt

1–5 arası satırlarda “Linux” → “Unix” dönüşümü yapar.

Tab Karakterlerini Boşlukla Değiştirme​


sed 's/\t/ /g' tablo.txt

⚙️ 7. sed, grep ve awk Arasındaki Farklar​

Özelliksedgrepawk
AmaçDüzenlemeAramaVeri işleme
Yerinde düzenleme✅❌❌
Regex desteği✅✅✅
Çoklu işlem✅❌✅
Raporlama yeteneği❌❌✅

🧠 8. Performans İpuçları​

-n kullanın: Gereksiz çıktıları bastırarak işlem süresini azaltır.

Komutları birleştirin: -e ile tek satırda çoklu işlem yapın.

Pipe (|) kullanın: Dosya oluşturmak yerine akış bazlı işlem yapın.

Büyük dosyalarda -i kullanmayın: Önce test edin, sonra değiştirin.

Alternatifleri bilin: awk veya perl bazı durumlarda daha hızlıdır.


❓ Sıkça Sorulan Sorular (SSS)​

1. sed komutu neden dosyayı değiştirmiyor?

sed varsayılan olarak sonucu ekrana yazar. Kalıcı değişiklik için -i parametresi gerekir.

2. sed’de neden tek tırnak (‘) kullanılır?

Shell karakterlerinin ($, !, ) yanlış yorumlanmasını önler.

3. sed, grep ve awk farkı nedir?

sed düzenler, grep arar, awk işler ve raporlar.

4. sed ile sekmeleri boşluğa çevirebilir miyim?

Evet:

bash

sed 's/\t/ /g' dosya.txt

5. sed ile boş satırları kaldırmak mümkün mü?

Evet:

bash

sed '/^$/d' file.txt


🧾 Komut Özeti​

GörevKomutAçıklama
Arama ve değiştirmesed 's/eski/yeni/'İlk eşleşmeyi değiştirir
Global değiştirmesed 's/eski/yeni/g'Tüm eşleşmeleri değiştirir
Yerinde düzenlemesed -i 's/x/y/'Dosyayı doğrudan düzenler
Satır silmesed '2d'2. satırı kaldırır
Desenle silmesed '/hata/d'“hata” geçen satırları siler
Boş satırları kaldırsed '/^$/d'Tüm boş satırları siler

🌟 Sonuç​

Linux’ta sed komutu, basit bir metin aracı değil — sistem yöneticilerinin, geliştiricilerin ve DevOps mühendislerinin gizli silahıdır. Büyük dosyalarda hızlı düzenleme, otomatik konfigürasyon ve verimli log analizi için vazgeçilmezdir.

💡 Bu komutları Rabisu Bulut Sunucularınızda test ederek sed’in gücünü deneyimleyin. Zaman kazanın, insan hatasını azaltın, sistemi profesyonelce yönetin. 🚀