intranet-sed-editoru

SED (Stream Editor)

 

Sed bir dosyadan veya standart girdiden(klavyeden) bilgi okur ve okuduğu bilgileri kullanıcının belirlediği düzene sokarak yazar.

 

SED Kullanımı

 

Dosya görüntüleme

sed -n "p" ceren_dosya komutu ile dosya içeriği görüntülenebilir. Veya daha yaygın olarak cat komutu ile dosya içeriği görüntülenebilir. Örneğin cat ceren_dosya komutu “ceren_dosya”nın içeriğini görüntüler.

Örnek:

Satir no:1

Satir no:2

Satir no:3

Satir no:4

sed -n '2,4p' ceren_dosya bu komut ceren_dosya içerisindeki 2. ile 4. satır arasını gösterecektir.

=> Satir no:2

=> Satir no:3

=> Satir no:4

 

Değişiklik yapma (substitute)

Sed kullanırken en çok kullanacağımız komut “s” komutudur. Bir karakteri veya karakter kümesini başka bir diziye çevirmeye yarar. Buna basit bir örnek :

Örnek:

Geçen salı casper computer'dan bilgisayar satın aldım.

sed 's/computer/bilgisayar/g' ceren_dosya

Bu komut ceren_dosya içerisindeki computer kelimesini bilgisayar'a çevirecektir. En sonda g parametresi satırın tamamını kontrol etmesini sağlar. Aksi takdirde her satırda sadece ilk “computer” kelimesini değiştirip bir sonraki satıra geçer.

=> Geçen salı casper bilgisayar'dan bilgisayar satın aldım.

 

Şartlı değişiklik

Örnek-1:

yeşil turuncu mavi siyah

sarı eflatun mavi kırmızı

sed '/sarı/s/mavi/kırmızı/' ceren_dosya => Bu komut satırı sadece içerisinde “ceren” geçen satırlarda “mavi” kelimesini “kırmızı” olarak değiştirir.

=> yeşil turuncu mavi siyah

=> sarı eflatun kırmızı kırmızı

 

Örnek-2:

Taksim – Mecidiyeköy

Taksim – Kabataş

Ortaköy – Taksim

Aksaray – Taksim

sed '2,4s/Taksim/Şişli/' ceren_dosya => Sadece 2. ve 4. satırlar arasında değişiklik yapar.

=> Taksim – Mecidiyeköy

=> Şişli– Kabataş

=> Ortaköy – Şişli

=> Aksaray – Şişli

 

Silme

Örnek-1:

Satir no:1

Satir no:2

Satir no:3

Satir no:4

sed '1,3d' ceren_dosya bu komut “ceren_dosya” içerisinde 1 ile 3. satır arasını silecektir.

=> Satir no:4

 

Örnek-2:

Aliye Demirci

Eren Can

Önder Ali Çavuşoğlu

sed '/Ali/d' ceren_dosya girdi bu komut içerisinde “Ali” geçen bütün satırları silecektir.

=> Eren Can

 

Kaydetme

Yaptığımız değişikliklerin farklı bir dosyaya kaydolması için komutun sonuna “ > dosya_adı” şeklinde eklememiz gerekir. Örneğin;

sed 's/İçel/Mersin/g' ceren_dosya > cerenb

ceren_dosya içerisinde yaptığımız değişiklik bu komut ile cerenb içerisine kaydolur.

 

Çoklu işlem

Yapacağımız çoklu değişikliklerde “-e” tagını kullanmamız gerekir.

Örnek-1:

Çankaya / Ankara

Beyoğlu / İstanbul

Sincan / Ankara

sed -e 's/Ankara/ANK/g' -e '2,3d' ceren_dosya

Yukarıdaki komut ceren_dosya içerisinde hem “Ankara” kelimesini “ANK” olarak değiştirecektir, hem de 2 ve 3. satırı silecektir.

=> Çankaya / ANK

 

* Aynı komutu ikinci kez kullanırken ikinci komuttan önce “-e” yerine “;” ile de ayırabiliriz.

Örnek-2:

google

sed -e 's/o/O/g; s/e/E/' ceren_dosya

Yukarıdaki komutta o ve e harflerini büyük yaptık. İki işlem de “s” komutunu kullanıyor.

=> gOOglE


 

Değiştirme parametreleri (substitution flags)

Değiştirme parametreleri aşağıdaki örnekteki [değiştirme parametresi] kısmına yazılarak kullanılabilir.

sed 's/Ankara/İstanbul/[değiştirme parametresi]' ceren_dosya

Örnek: sed 's/Ankara/İstanbul/6' ceren_dosya

g

Sıklıkla kullandığımız bu parametre sadece ilk değil bütün eşleşmeler üzerinde değişiklik yapılması için kullanılır

SAYI

Satır içerisindeki kaçıncı eşleşme üzerinde değişiklik yapacağımızı sayı girerek ayarlayabiliriz.

p

Değişiklik gerçekleşen satırların alt satıra bir kopyasını daha yazar.

w DosyaAdi

Değişiklik gerçekleştiği takdirde değişen satırları yeni bir dosyaya kaydeder.

I i

Büyük-küçük harf farklılığını ortadan kaldırır.

* Bir komut içerisinde ardarda yazarak birden fazla değiştirme parametresi kullanılabilir.

Örnek:

Bolu ankara Denizli ANKARA Gaziantep Ankara

sed 's/Ankara/İstanbul/i g' ceren_dosya

=> Bolu İstanbul Denizli İstanbul Gaziantep İstanbul
 

Adres Aralıkları

'3,6d'

3 ile 6 arasındaki satırları siler

'6,3d'

Sed geriye doğru satır saymadığı için sadece 6. satır silinir.

'2,+6d'

2. satır ve sonrasında gelen 6 satır silinir.

'4,10!d'

4 ile 10 arasındaki satırlar kalır, diğer satırlar silinir.

'1~3d'

1. satır silinir, 3 satır atlar 4. satır silinir, 3 satır atlar 7. satır silinir. Bu şekilde dosya sonuna kadar silme işlemi devam eder.

'5,8p'

5 ile 8 arasındaki satırlar görüntülenir.

'7p'

Sadece 7. satır görüntülenir.


 

Sed Kaynak Dosyası

Kaynak dosyamızı metin belgesine oluşturduktan sonra “-f” parametresiyle çalıştırabiliriz. Örneğin kaynak.txt isimli bir dosya hazırlıyalım ve içerisine aşağıdaki komutları yazıp kaydedelim;

kaynak.txt:

s/a/A/g

s/e/E/g

s/b/B/g

 

Örnek:

bahcelievler

sed -f kaynak.txt ceren_dosya komutunu uyguladığımızda ceren_dosya üzerinde bu değişiklikleri gerçekleştirecektir.

=> BAhcEliEvlEr

 

Uyarı

Aşağıdaki karakterler sed tarafından kullanılan özel karakterler kapsamına girer. Bu karakterlerin herbirisinin anlamı olduğundan dikkatli kullanılmaları gerekir.

.*[]^$\&

Öncesinde ters slash “\” kullanarak özelliklerini etkisiz hale getirebiliriz. Örneğin;

sed 's/fiyati 500\$ kadar/fiyati 700$/' ceren_dosya

Bu örnekte metinde geçen “fiyati 500$ kadar” ifadesi “fiyati 700$” ile değiştiriliyor.