Onur BOLATOĞLU
3 min readJul 19, 2024

Sed nedir | Pratik sed komutları

sed, yani "stream editor" (akış düzenleyicisi), metin dosyalarını ve veri akışlarını düzenlemek için kullanılan güçlü bir komut satırı aracıdır. sed, Unix/Linux tabanlı sistemlerde yaygın olarak kullanılır ve metin verilerini okuyup, işleyip, dönüştürebilme yeteneğine sahiptir.

  • Belirli bir metni arayıp, bu metni başka bir metinle değiştirebilirsiniz.
  • Dosya içeriğine yeni satırlar ekleyebilir veya mevcut satırları silebilirsiniz.
  • Komut çıktılarının veya dosya içeriklerinin akışını işleyebilir.
# 1. Metin Arama ve Değiştirme (Search and Replace)
# dosya.txt içindeki ilk 'eski' kelimesini 'yeni' ile değiştirir.
sed 's/eski/yeni/' dosya.txt

# 2. Global Değiştirme (Her Satırdaki Tüm Eşleşmeleri Değiştirir)
# dosya.txt içindeki tüm 'eski' kelimelerini 'yeni' ile değiştirir.
sed 's/eski/yeni/g' dosya.txt

# 3. Büyük/Küçük Harf Duyarsız Değiştirme (Case Insensitive Replace)
# dosya.txt içindeki ilk 'eski' kelimesini büyük/küçük harf duyarsız olarak 'yeni' ile değiştirir.
sed 's/eski/yeni/I' dosya.txt

# 4. Belirli Bir Satırı Silme (Delete a Specific Line)
# dosya.txt içindeki 3. satırı siler.
sed '3d' dosya.txt

# 5. Belirli Satırlar Aralığını Silme (Delete a Range of Lines)
# dosya.txt içindeki 2. ile 5. satırlar arasını (2, 3, 4 ve 5. satırları) siler.
sed '2,5d' dosya.txt

# 6. Belirli Bir Satırdan Sonrasını Silme (Delete Lines from a Specific Line to End)
# dosya.txt içindeki 5. satırdan sonrasını (5. satır dahil) siler.
sed '5,$d' dosya.txt

# 7. Belirli Bir Satırdan Önce Yeni Satır Ekleme (Insert a Line Before a Specific Line)
# dosya.txt içindeki 2. satırdan önce 'Yeni Satır' ifadesini ekler.
sed '2i\Yeni Satır' dosya.txt

# 8. Belirli Bir Satırdan Sonra Yeni Satır Ekleme (Insert a Line After a Specific Line)
# dosya.txt içindeki 2. satırdan sonra 'Yeni Satır' ifadesini ekler.
sed '2a\Yeni Satır' dosya.txt

# 9. Bir Satırın İçeriğini Değiştirme (Replace a Specific Line)
# dosya.txt içindeki 3. satırı 'Yeni İçerik' ile değiştirir.
sed '3c\Yeni İçerik' dosya.txt

# 10. Düzenli İfade Kullanarak Değiştirme (Replace Using Regular Expressions)
# dosya.txt içindeki tüm sayıları 'NUM' ile değiştirir.
sed 's/[0-9]\+/NUM/' dosya.txt

# 11. Boş Satırları Silme (Delete Empty Lines)
# dosya.txt içindeki tüm boş satırları siler.
sed '/^$/d' dosya.txt

# 12. Belirli Bir Deseni İçeren Satırları Silme (Delete Lines Containing a Specific Pattern)
# dosya.txt içindeki 'desen' ifadesini içeren satırları siler.
sed '/desen/d' dosya.txt

# 13. Satır Numaralarını Ekleme (Add Line Numbers)
# dosya.txt içindeki satır numaralarını ekler.
sed '=' dosya.txt | sed 'N;s/\n/: /'

# 14. Bir Dosyadaki Tüm İçeriği Büyük Harfe Çevirme (Convert All Text to Uppercase)
# dosya.txt içindeki tüm metni büyük harfe çevirir.
sed 's/.*/\U&/' dosya.txt

# 15. Dosya Üzerinde Kalıcı Değişiklik Yapma (Make Changes Permanent)
# dosya.txt içindeki 'eski' ifadesini kalıcı olarak 'yeni' ile değiştirir.
sed -i 's/eski/yeni/' dosya.txt

# 16. Bir Dosyanın Belirli Bir Satırını Yazdırma (Print a Specific Line)
# dosya.txt içindeki 3. satırı yazdırır.
sed -n '3p' dosya.txt

# 17. Tersine Çevirme (Reverse the Order of Lines)
# dosya.txt içeriğini tersine çevirir.
sed '1!G;h;$!d' dosya.txt

# 18. Satırların Sonuna Metin Eklemek (Add Text to the End of Each Line)
# dosya.txt içindeki her satırın sonuna ' ek metin' ifadesini ekler.
sed 's/$/ ek metin/' dosya.txt

# 19. Satır Başlarına Metin Eklemek (Add Text to the Beginning of Each Line)
# dosya.txt içindeki her satırın başına 'başlangıç ' ifadesini ekler.
sed 's/^/başlangıç /' dosya.txt

# 20. Satır Aralıkları İçin İşlem Yapma (Replace Within a Range of Lines)
# dosya.txt içindeki 2. ile 4. satırlar arasında 'eski' ifadesini 'yeni' ile değiştirir.
sed '2,4s/eski/yeni/' dosya.txt

# 21. Büyük/Küçük Harf Duyarsız ve Tüm Eşleşmeleri Değiştirme (Case Insensitive and Global Replace)
# dosya.txt içindeki tüm 'eski' ifadelerini büyük/küçük harf duyarsız olarak 'yeni' ile değiştirir.
sed 's/eski/yeni/Ig' dosya.txt

# 22. Komut Çıkışını İşlemek (Process Command Output)
# echo komutunun çıktısındaki 'Hello' kelimesini 'Hi' ile değiştirir.
echo "Hello World" | sed 's/Hello/Hi/'

# 23. Komut Çıktısını İşleyerek Satırları Silme (Delete Lines from Command Output)
# ls -l komutunun çıktısındaki 1. satırı siler.
ls -l | sed '1d'

# 24. Çoklu Komut Çıktısını İşlemek (Process Multiple Command Outputs)
# cat komutunun çıktısındaki 'foo' kelimesini 'bar' ile değiştirir ve tüm boş satırları siler.
cat dosya.txt | sed -e 's/foo/bar/' -e '/^$/d'

# 25. Log Dosyasını Dinamik Olarak İşlemek (Dynamically Process a Log File)
# tail -f komutunun çıktısındaki 'error' kelimesini 'ERROR' ile değiştirir.
tail -f /var/log/syslog | sed 's/error/ERROR/'