17
Konuya ait anahtar kelimeler : SED - Bölüm 1 "Sed" bir çeşit veri düzenleme editörüdür. "Sed" ile uygulanan değişiklikler orjinal dosya üzerinde herhangi bir değişikliğe neden olmaz. Zira düzenlemelerin bir dosyaya yazılması komutu kullanılmadığı takdirde. Siz bir dosya içeriğini değiştirerek ekranda gösterdikten sonra çıkış yaptığınız zaman değişiklikler kaybolur. "sed" kelime silme, değiştirme vb.. işlemleri uygulayarak bir çıktı üretir. Önceki konularda görmüş olduğumuz komutların daha kısa ve sade bir şekilde uygulanmasını sağlamaktadır. Daha fazla ayrıntı için "sed" man sayfasına bakabilirsiniz.("man sed" komutu ile.) Şimdi öncelikle çalışma dizinimize girelim(script klasörü) ardından "sedex" adında bir dosya oluşturalım ve dosya içeriğini aşağıdaki şekilde düzenleyip kaydedelim.
[alax@alax ~]$ cdd [alax@alax script]$ > sedex [alax@alax script]$ nano sedex Burası ilk satır. Kara tiren gecikir. Buharlı tren. Hızlı tiren. Mavi tren. Burası altıncı satır. [alax@alax script]$
Sed komutu parametreleri:
a\Aktif satırın aşağısına ekleme yapma.
c\Aktif satırı verilen cümle/kelime ile değiştirme.
dYazıyı silme.
i\Aktif satırın yukarısına ekleme yapma.
pYazıyı gösterme, yazdırma.
rDosya okuma.
sBul ve değiştir.
wBir dosyaya yaz.
Sed opsiyonları:
-e scriptKomut satırında birden fazla sed opsiyonu kullanma.
-fSed komutlarının olduğu bir script dosyasını sed ile beraber çalıştırmak.
-nSessiz mod.
-VVersiyon bilgilerini göster ve çık.
Interaktif düzenleme: Öncelikle "sedex" dosyamızın içeriğini satır numaraları ile beraber görelim.
[alax@alax script]$ cat -n sedex 1 Burası ilk satır. 2 Kara tiren gecikir. 3 Buharlı tren. 4 Hızlı tiren. 5 Mavi tren. 6 Burası altıncı satır. [alax@alax script]$
Şimdi ilk olarak "sed" komutu ile dosyamız içerisinde "tiren" kelimesinin olduğu satırları "p" parametresi ile kullanalım ve yazdıralım.
[alax@alax script]$ sed '/tiren/p' sedex Burası ilk satır. Kara tiren gecikir. Kara tiren gecikir. Buharlı tren. Hızlı tiren. Hızlı tiren. Mavi tren. Burası altıncı satır. [alax@alax script]$
Yukarıdaki örnekte, gördüğünüz üzere "sed" "tiren" kelimesinin olduğu satırları iki defa gösteriyor. Normal olarak herhangi bir opsiyon kullanmadığımız zaman bu şekilde bir çıktı üretecektir. Fakat bizim istediğimiz sonuç, sadece kelimenin olduğu satırları görmek olsun(grep komutunda olduğu gibi). Şimdi örneğimizi "-n" opsiyonu ile kullanalım.
[alax@alax script]$ sed -n '/tiren/p' sedex Kara tiren gecikir. Hızlı tiren. [alax@alax script]$
Evet istediğimiz sonucu elde etmiş olduk. Şimdi dosya içerisinde "tiren" kelimesinin olduğu satırları silerek diğer satırları gösterelim.
[alax@alax script]$ sed '/tiren/d' sedex Burası ilk satır. Buharlı tren. Mavi tren. Burası altıncı satır. [alax@alax script]$
Şimdi biraz daha karmaşık bir gösterim gerçekleştirelim. "Burası" ile başlayan ve içerisinde "altıncı" kelimesi olan satırları yazdıralım.
[alax@alax script]$ sed -n '/^Burası.*altıncı.*/p' sedex Burası altıncı satır. [alax@alax script]$
"sed" kullanımında, yıldız karakterini kullanırken önünde bir "." nokta ile kullanıldığına dikkat ediniz. Satır aralığı: Şimdi belirli satır numaralarını silme/gösterme işlemini gerçekleştirelim. Mesela örnek dosyamız üzerinde, satır numarası 2 ve 5 arasındaki satırları silerek sonucu ekranda gösterelim. 2'den başlanarak 3, 4 ve 5. satırlar bu aralığa girmektedir.
[alax@alax script]$ sed '2,5d' sedex Burası ilk satır. Burası altıncı satır. [alax@alax script]$
Bu sefer 3. satırdan itibaren son satıra kadar silme işlemi yaparak sonucu ekranda gösterelim.
[alax@alax script]$ sed '3,$d' sedex Burası ilk satır. Kara tiren gecikir. [alax@alax script]$
"Buharlı" kelimesinin olduğu satırdan başlayarak "Mavi" kelimesinin olduğu satıra kadar olan satırları gösterelim.
[alax@alax script]$ sed -n '/Buharlı/,/Mavi/p' sedex Buharlı tren. Hızlı tiren. Mavi tren. [alax@alax script]$
Kısacası "sed" komutunun çalışma prensibini, "Öncelikle dosya içeriğini çekerek üzerinde silme/değiştirme vb. işlemleri gerçekleştirdikten sonra çıktı üretmek." şeklinde tanımlayabiliriz. Şu ana kadar öğrendiğiniz "sed" komut örneklerini kendiniz farklı şekillerde kullanarak pratik yapınız. Sed, kullanabileceğiniz önemli komutlardan birtanesidir, bu yüzden pratik yapmanız konuyu anlamanıza fayda sağlayacaktır. Bir sonraki dersimizde "sed" kullanımına devam edeceğiz.