29 Ekim 2021 Cuma

sed komutu

Giriş
sed kelimesi "stream editor" demek. Dosyadan okur ve bir şeyi değiştirerek ekrana basar. Eğer dosyayı değiştirmek istersek "-i" seçeneği ile çalıştırmak gerekir.

Birden Fazla Kademeli Sed
Noktalı virgül ile ayırırız. 
Örnek
Şöyle yaparız. Burada her kademe teker teker uygulanıyor
 sed 's/@/@A/g; s/\t/@B/g'
Örnek
Şöyle yaparız. Burada farklı olarak {...} kullanılıyor. Eşleşen kısım önce print ediliyor, daha sonra substitute ediliyor.
 sed '/é/{p;s//e/g;}'
Cümle Başına Konulan İşlemler
s/ İle Substitute
Cümlenin başına s koyarız

Örnek - Replace With Empty String
Baştaki 0 ve : karakterlerinden kurtulmak için şöyle yaparız
sed 's/^[0:]*//' file
Elimizde şöyle bir dosya olsun
00:00:30
00:01:30
00:30:00
01:30:00
30:00:00
Çıktı olarak şunu alırız
30
1:30
30:00
1:30:00
30:00:00
Örnek - Capture
Şöyle yaparız. Burada ilk 80 karakter yakalanıyor ve \1\n ile çıktıya veriliyor.
echo "..." | sed -E 's/(.{80}[^ ]*) /\1\n/g'

y/ İle Substitute
Cümlenin başına y koyarız. Açıklaması şöyle
... if your replacements are all single-character replacements, the y command is more efficient
Örnek
Şöyle yaparız. Eşleşen kısım önce print ediliyor, daha sonra substitute ediliyor.
 sed '/é/{p;y/é/e/;}'
Cümle Sonuna İşlemler
/d ile Delete
Cümlenin sonuna /d koyarız

/g ile Global
Normalde set satırdaki ilk eşleşmeyi bulup işini bitirince bir sonraki satıra geçer. Tüm eşleşmelerde iş yapsın istiyorsak cümlenin sonuna /g koyarız

/i ile Insensitive
Case insensitive olsun istersek cümlenin sonuna /i koyarız

/p ile Print
Cümlenin sonuna /p koyarız
Örnek
DEFINE ile başlayan satırları yazdırmak için şöyle yaparız. -n seçeneği sadece eşleşen satırları çıktı olarak verir
sed  -n -e '/^DEFINE/p' *.*
/q ile Quit
Cümlenin sonuna /q koyarız

Komut Seçenekleri
-E seçeneği
Sanırım düzenli ifade olduğunu belirtir

-n seçeneği
Sadece eşleşen satırları çıktı olarak verir

Hiç yorum yok:

Yorum Gönder