Gönderen Konu: Sed Kodu Kullanimi  (Okunma sayısı 3003 defa)

HS-Abdullah

  • Administrator
  • Newbie
  • *****
  • İleti: 45
    • Profili Görüntüle
    • E-Posta
Sed Kodu Kullanimi
« : Eylül 12, 2009, 11:59:47 ÖS »
Merhaba,

sed kodunun basitce kullanimini sizinle paylasacagim. Bunun icin ingilizce bir makaleyi turkceye cevirdim. Size burda verecegim bilgiler temel bilgiler olacaktir. Bunun ekleriyle kullanabilecegimiz bir cok konu vardir.  Fakat oncelikle temel olarak girisimizi yapalim. Insallah ileride tamamini ben yada baska bir arkadasimiz paylasir.

Dersimize baslamadan once ornek parcamizi verelim. Ileride bu parca isimize yarayacaktir.Bu parca poem.txt icinde yer alsin.

Ornek Parca :

Mary had a little ham
Mary fried a lot of spam
Jack ate a Spam sandwich
Jill had a ham spamwich


Konunun yogunlasacagi 2 adet komutu sizlere verelim. Asagida aciklanan aslinda bu iki komutun mantigindan ve kullanim alanlarindan baska bir sey degil.

-------------------
Donusturucu sed   
Kod: [Seç]
's/eskiparca/yeniparca/g' dosya
Silici sed   
Kod: [Seç]
'baslangic,bitisd' dosya
------------------

Donusturucu "sed” ile ilgili alistirma yapalim. Ornek olarak poem.txt dosyamizin icindeki “lamb” kelimesini “hum” ile degistirelim.

Bunun icin asagidaki kodlari inceleyiniz:
Kod: [Seç]
sed 's/lamb/ham/g' poem.txt

Kod da verilen “s” nin anlamini cevirici olarak, “g” nin anlamini da evrensel degistirici olarak dusunebiliriz. Ayrıca "g" (her satırın yalnızca ilk olayini değiştirmek için) takisini yazmayabiliriz veya yerine (her satırda ilk X olaylarini değiştirmek için bir sayı belirtebiliriz.).

Simdide silici sed icin biraz alistirma yapalim. Ilk basta size ornek olarak verdigimiz ve baslangic - bitis olarak yazdigimiz terimler aslinda eslesmesi gereken satirlardir.

Hatirlayalim : Silici sed   
Kod: [Seç]
'baslangic,bitisd' dosya
Ornegin bizim klasik poem.txt mizde 2. Ve 3 satirlari kapsayalan bir silici sed yazalim.

Kod: [Seç]
sed '2,3d' poem.txtMary had a little lamb
Jill had a lamb spamwich

Bu ornekte ise silici sed 1. Satirdan baslayacak icinde Jack ismi gecen  ( o satir ) dahil son satira kadar silecektir.
Kod: [Seç]
sed '1,/Jack/d' poem.txt
Bir çok kişi sed komutunu iki değişkeni değiştirmek için kullanır. Fakat ben sed i bazı ifadeleri bulup silmek içinde kullanmak istiyorum. Bunun anlamı siz bunu eşleştirmek içinde kullanabilirsiniz. Grep gibi.Ancak muhtemelen bunun gibi birşey yapmaya gerek olmayacaktir..

Birinci satırdan son satıra kadar "lamp" kelimesini "ham" ile değiştirmek için ve çıktıyı yeni bir dosyaya yazmak için aşağıdaki komutları uygulayınız.

Sonuç çıktısını verene kadar ekranda herhangi bir işlem yapmayınız. Şayet new.file in içeriklerine bakarsanız bu satırları göreceksiniz.
Kod: [Seç]
sed 's/lamb$/ham/g' poem.txt > new.file
Saygilarimla...

Abdullah CINAR