Cemre Acar
Linux Sed Komutu Kullanımı

Linux Sed Komutu Kullanımı

Bu yazımda Linux Sed Komutuna ve Sed Komutunun temel kullanım özelliklerine değineceğim. Sed Nedir, Sed ile neler yapılabilir örnekler ile işleyeceğim. Daha önce Linux Grep Komutu Kullanımı üzerine bir yazı yayınlamış ve Grep komutu ile temel işlemleri ve grep komutunun bazı temel özelliklerinden bahsetmiştim. Grep komutunu anlattığım Linux Grep Komutu Kullanımı adlı yazıma da buradan ulaşabilirsiniz.

Sed (Stream Editor)

Sed , daha önce değindiğimiz Grep ile benzer şekilde özel karakterler yani RE (Regular Expression) kullanabilen , extra olarak kendine has kurallar barındıran bir araçtır. Sed’in kullanımına örnekler ile bakalım. 

Sed kullanırken çok sık ‘s’ kullanacağımızı belirtmek isterim. Bu bir karakteri ya da karakter kümesini başka bir diziye çevirmemize yarar. 
Elimizde 5 satır Elma yazan bir .txt dosyamız olsun

sed ‘s/Elma/Armut/g’ dosya.txt

Komutunu verdiğimizde her satırın Armut ile değiştiğini gözlemleyebiliriz. Burada komutun sonundaki ‘g’ , dosyanın tamamının araştırılması gerektiğini söylüyor.

Dosyamızda yer alan kelimeler bazen sed tarafından özel olarak yorumlanan karakterler içerebilir (. * [ ] ^$ \ & ). Bu ifadeleri kullanmak için kaçış ifadesini kullanmamız gerekir. Aşağıdaki örnekte bir PATH mevcut ve biz yolu değiştiricez diyelim. Ancak PATH , “/” ifadeleri ile ayrılıyor. İşte bu örnekte kaçış ifadesi kullanılarak yolun başarıyla değiştirlmesi sağlanıyor.


sed ‘s/\/usr\/bin\/bin/g’ dosya.txt

Ek olarak , eğer ki aynı anda birden fazla değiştirme yapmak istersek aşağıdaki şekilde bir kullanım gerçekleştirebiliriz.

sed -e ‘s/Apple/Elma/g’ -e ‘s/Strawberry/Çilek/g’ dosya.txt

Çeşitli örneklerimize aşağıda devam edelim.

$ karakteri satır sonunu belirtir.

sed 's/ $//' dosya.txt

‘.’ (nokta) karakteri herhangi bir karakter anlamına gelir.

Örneğin: 
Üzerinde işlem yapacağımız dosyada bütün satırlardaki ilk iki karakteri silmek için aşağıdaki komutu kullanabiliriz.

sed 's/^..//' dosya.txt

Köşeli parantezler ile birden fazla sayıda karakter içinde seçim yapabiliriz.

sed 's/[Oo]pen[Ww]indow/openwindow/g' dosya.txt

Sed , kendi içinde 25 komuttan oluşan bir komut kümesidir. Bunlardan ilk olarak print’e değinelim.

Print

Her zamanki gibi örnekler üzerinden gidelim. İlk olarak bulunduğumuz dizinde ls -l komutunu verelim. Ardından aşağıdaki pipe (boru) ile sed print komutunu kullanalım.

ls -l | sed -n p

Bu komut ile aynı çıktıyı aldık. Aşağıdaki komut ile ise çıkan listeyi 1 ile 3 arasındakiler şeklinde belirtebiliyoruz.

ls -l | sed -n 1,3p

Aşağıdaki komut ile ise yalnızca dizinimizdeki ‘directory’ tipindeki dosyaları listeliyoruz.

ls -l | sed -n ‘/^d/p’


Substitution

Evet , aslında bu oldukça sık kullandığımız ve bildiğimiz bir şey. Türkçeye yer değiştirme ya da yerine geçme olarak çevirebiliriz.
Örnek olarak yine bir ls -l komutu verelim. Bu komutu verdiğimizde user ve group kısımlarını görüyoruz. Bunlar benim şu an çalıştığım bilgisayarımda cmracar ve staff olarak gözüküyor ve ben de bunun üzerinden devam edeceğim.
Aşağıdaki komut ile user kısmı cmracar olan tüm dosyaların user kısmını “cemre” olarak değiştirelim.

ls -l | sed ‘s/cmracar/cemre/’

Bu komutun çıktısı olarak listelenen tüm dosyaların kullanıcısı “cemre” olarak değiştirilmiş oldu.

Delete

Adından da anlaşılacağı gibi silmek için kullandığımız bir komut.
Aşağıdaki örneğimizde tipi “directory” olan dosyalarımızı listeden silmiş oluyoruz.

ls -l | sed ‘/^d/d’

Append , Insert ve Change

Bu komutlar ekleme yapmak (Append & Insert) ve değişiklik yapmak (Change) için kullanılır. Aşağıdaki şekilde gösterimini yapabiliriz.

[satır-adresiniz]a\ #Append

[satır-adresiniz]i\ #Insert

[satır-adresiniz]c\ #Change

Bunun ile ilgili örnek vermek gerekirse , ls ile listelediğimiz dosyalarımızın arasına istediğimiz bir şey yazdırmayı deneyelim.

ls -l | sed ‘3i\

bu komuttan sonra pipe quote> satırı gelecek ve ne yazmasını istiyorsak gireceğiz ardından tekrar pipe quote> satırı geldiğnde ’ (kesme işareti) girerek komutu sonlandırabilir ve sonucunda listemizin 3. satırında yazmasını istediğimiz şeyi görebiliriz.

Aynı şekilde change kullanımı için ls -l komutunun örneğini verebiliriz. 

ls -l | sed '/^d/c \

Yukarıdaki komut ile yanızca klasör olan dosyaların yerine gelecek olan yorum satırında yazdırmak istediğimizi listeleyebiliriz. Örneğin benim bilgisayarımda ben “Burada Bir Klasör Vardı” yazısını listeletmiş oldum.

Linux Sed Komutu Kullanımı adlı yazımı burada sonlandırıyorum. Bu yazıda Sed nedir, Linux Sed kullanımı ve Sed komutunun temel özelliklerini göstermeye çalıştım. Yazıda eksik ya da yetersiz gördüğünüz kısımları yorum olarak belirtebilirsiniz. Sağlıkla Kalın.

Heyy ! Blog'a abone olup yazılarımdan ilk sen haberdar olmak ister misin ?

ABONE OL!

Yorumlar

Yorum Ekle

Yorumunuz onaylandıktan sonra yayınlanacaktır.