Akış Düzenleyici - Temel Sözdizimi
Bu bölüm, SED'in desteklediği temel komutları ve bunların komut satırı sözdizimini tanıtır. SED, aşağıdaki iki biçimde çağrılabilir:
sed [-n] [-e] 'command(s)' files
sed [-n] -f scriptfile files
İlk form, komutların satır içinde belirtilmesine izin verir ve bunlar tek tırnak içine alınır. Daha sonra, SED komutlarını içeren bir komut dosyası belirtmeye izin verir. Ancak, her iki formu birden çok kez birlikte kullanabiliriz. SED, davranışını kontrol etmek için çeşitli komut satırı seçenekleri sunar.
Birden çok SED komutunu nasıl belirleyebileceğimizi görelim. SED,deletebelirli satırları silme komutu. 1., 2. ve 5. satırları silelim. Şimdilik silme komutunun tüm ayrıntılarını yok sayın. Silme komutu hakkında daha sonra daha fazla tartışacağız.
İlk olarak, dosya içeriğini kullanarak cat komut.
[jerry]$ cat books.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
1) A Storm of Swords, George R. R. Martin, 1216
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864
Şimdi SED'e yalnızca belirli hatları kaldırması talimatını verin. Burada üç satırı silmek için -e seçeneği ile üç ayrı komut belirledik.
[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
6) A Game of Thrones, George R. R. Martin, 864
Ek olarak, bir metin dosyasına birden fazla SED komutu yazabilir ve metin dosyasını SED'e argüman olarak sağlayabiliriz. SED, her komutu model arabelleğine uygulayabilir. Aşağıdaki örnek, SED'nin ikinci biçimini göstermektedir.
Önce, SED komutlarını içeren bir metin dosyası oluşturun. Kolay anlaşılması için aynı SED komutlarını kullanalım.
[jerry]$ echo -e "1d\n2d\n5d" > commands.txt
[jerry]$ cat commands.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
1d
2d
5d
Şimdi SED'ye metin dosyasından komutları okumasını söyleyin. Burada, yukarıdaki örnekte gösterilenle aynı sonucu elde ediyoruz.
[jerry]$ sed -f commands.txt books.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
6) A Game of Thrones,George R. R. Martin, 864
Standart Seçenekler
SED, aşağıdaki standart seçenekleri destekler:
-n: Desen tamponunun varsayılan yazdırması. Örneğin, aşağıdaki SED komutu herhangi bir çıktı göstermez:
[jerry]$ sed -n '' quote.txt
-e
[jerry]$ sed -e '' -e 'p' quote.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
There is only one thing that makes a dream impossible to achieve: the fear of failure.
There is only one thing that makes a dream impossible to achieve: the fear of failure.
- Paulo Coelho, The Alchemist
- Paulo Coelho, The Alchemist
-f
: Sonraki argüman, düzenleme komutlarını içeren bir dosyadır. Köşeli parantezler zorunlu parametreyi ifade eder. Aşağıdaki örnekte, dosya üzerinden yazdırma komutunu belirtiyoruz:
[jerry]$ echo "p" > commands
[jerry]$ sed -n -f commands quote.txt
Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
There is only one thing that makes a dream impossible to achieve: the fear of failure.
- Paulo Coelho, The Alchemist
GNU'ya Özgü Seçenekler
GNU'ya özgü SED seçeneklerini hızlıca gözden geçirelim. Bu seçeneklerin GNU'ya özgü olduğuna dikkat edin; ve SED'nin diğer varyantları tarafından desteklenmeyebilir. Sonraki bölümlerde, bu seçenekleri daha ayrıntılı olarak tartışacağız.
-n, --quiet, --silent: Standart -n seçeneğiyle aynı.
-e script, --expression = script: Standart -e seçeneğiyle aynı.
-f betik-dosyası, --file = betik-dosyası: Standart -f seçeneğiyle aynı.
--follow-symlinks: Bu seçenek sağlanırsa, SED dosyaları yerinde düzenlerken sembolik bağları izler.
-i [SUFFIX], --in-place [= SUFFIX]: Bu seçenek, dosyayı yerinde düzenlemek için kullanılır. Sonek sağlanmışsa, orijinal dosyanın yedeğini alır, aksi takdirde orijinal dosyanın üzerine yazar.
-l N, --line-lenght = N: Bu seçenek, l komutunun satır uzunluğunu N karaktere ayarlar.
--posix: Bu seçenek tüm GNU uzantılarını devre dışı bırakır.
-r, --regexp-extended: Bu seçenek, temel düzenli ifadeler yerine genişletilmiş düzenli ifadelerin kullanılmasına izin verir.
-u, --unbuffered: Bu seçenek sağlandığında, SED, giriş dosyalarından minimum miktarda veri yükler ve çıktı tamponlarını daha sık temizler. Çıkışı beklemek istemediğinizde "tail -f" çıktısını düzenlemek için kullanışlıdır.
-z, --null-data: Varsayılan olarak, SED her satırı yeni bir satır karakteriyle ayırır. NULL-veri seçeneği sağlanmışsa, satırları NULL karakterlerle ayırır.