Akış Düzenleyici - Temel Komutlar
Bu bölüm birkaç kullanışlı SED komutunu açıklamaktadır.
Komutu Sil
SED, metni işlemek için çeşitli komutlar sağlar. Önce şunu keşfedelim:deletekomut. Silme komutunu şu şekilde uygulayabilirsiniz:
[address1[,address2]]daddress1 ve address2sırasıyla başlangıç ve bitiş adresleridir, bunlar satır numaraları veya desen dizileri olabilir. Bu adreslerin her ikisi de isteğe bağlı parametrelerdir.
İsminden de anlaşılacağı üzere silme komutu, silme işlemini gerçekleştirmek için kullanılır ve SED on line çalıştığı için bu komutun satırları silmek için kullanıldığını söyleyebiliriz. Sil komutunun satırları yalnızca desen arabelleğinden kaldırdığını unutmayın; satır çıkış akışına gönderilmez ve orijinal dosya değişmeden kalır. Aşağıdaki örnek bu noktayı göstermektedir.
[jerry]$ sed 'd' books.txtAma çıktı nerede? Hat adresi sağlanmadıysa, SED varsayılan olarak her satırda çalışır. Bu nedenle, tüm satırları desen arabelleğinden siler. Komutun standart çıktıya hiçbir şey yazdırmamasının nedeni budur.
SED'ye sadece belirli hatlarda çalışması talimatını verelim. Aşağıdaki örnek yalnızca 4. satırı kaldırır.
[jerry]$ sed '4d' books.txtYukarı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 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864Ek olarak SED, virgül (,) kullanarak adres aralığını da kabul eder. SED'e N1'den N2'ye hatları kaldırması talimatını verebiliriz. Örneğin, aşağıdaki örnek 2'den 4'e kadar olan tüm satırları siler.
[jerry]$ sed '2, 4 d' books.txtYukarı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 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864SED'in adres aralığı sadece sayılarla sınırlı değildir. Kalıpları bir adres olarak da belirleyebiliriz. Aşağıdaki örnek, yazar Paulo Coelho'nun tüm kitaplarını kaldırmaktadır.
[jerry]$ sed '/Paulo Coelho/d' books.txtYukarı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 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones, George R. R. Martin, 864Metinsel kalıp kullanarak bir adres aralığı da belirleyebiliriz. Aşağıdaki örnek, desenler arasındaki tüm çizgileri kaldırırStorm ve Fellowship.
[jerry]$ sed '/Storm/,/Fellowship/d' books.txt  
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864Buna ek olarak, SED ile dolar ($), artı (+) ve tilde (~) operatörlerini de kullanabiliriz.
Komut Yaz
Herhangi bir dosya üzerinde gerçekleştirdiğimiz önemli işlemlerden biri yedeklemedir, yani dosyanın başka bir kopyasını oluştururuz. SED,writemodel arabelleğinin içeriğini bir dosyada saklama komutu. Aşağıda verilen sözdizimiwrite benzer komut delete komut.
[address1[,address2]]w fileBuraya, address1 ve address2sırasıyla başlangıç ve bitiş adresleridir, bunlar satır numaraları veya desen dizileri olabilir. Bu adreslerin her ikisi de isteğe bağlı parametrelerdir.
Yukarıdaki sözdiziminde, w yazma komutunu ifade eder ve fileiçeriği sakladığınız dosya adıdır. Dikkatli olfileparametre. Bir dosya adı verildiğinde, SED mevcut değilse anında bir dosya oluşturur ve zaten mevcutsa bunun üzerine yazar.
SED kullanarak dosyanın tam bir kopyasını yapalım. Arasında tam olarak bir boşluk olması gerektiğini unutmayınw ve file.
[jerry]$ sed -n 'w books.bak' books.txtAdlı başka bir dosya oluşturduk books.bak. Şimdi her iki dosyanın da aynı içeriğe sahip olduğunu doğrulayın.
[jerry]$ diff books.txt books.bak  
[jerry]$ echo $?Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
0Varsayabilirsiniz: cpcommand tam olarak aynı şeyi yapar. Evet! cpkomutu da aynı şeyi yapar, ancak SED olgunlaşmış bir yardımcı programdır. Kaynak dosyadan yalnızca belirli satırları içeren bir dosya oluşturmaya izin verir. Başka bir dosyada sadece çift satırları saklayalım.
[jerry]$ sed -n '2~2 w junk.txt' books.txt  
[jerry]$ cat junk.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
2) The Two Towers, J. R. R. Tolkien, 352 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones, George R. R. Martin, 864Ayrıca yazma komutuyla virgül (,), dolar ($) ve artı (+) operatörlerini de kullanabilirsiniz.
Buna ek olarak, SED ayrıca yazma komutuyla desen eşleştirmeyi de destekler. Tek tek yazarların tüm kitaplarını ayrı bir dosyada saklamak istediğinizi varsayalım. Sıkıcı ve uzun yollardan biri bunu elle yapmaktır ve daha akıllıca yolu SED kullanmaktır.
[jerry]$ sed -n -e '/Martin/ w Martin.txt' -e '/Paulo/ w Paulo.txt' -e '/Tolkien/ w 
Tolkien.txt' books.txtYukarıdaki örnekte, her satırı bir modelle eşleştiriyoruz ve eşleşen çizgiyi belirli bir dosyada saklıyoruz. O çok basit. Birden fazla komut belirtmek için kullandık-eSED komutunun anahtarı. Şimdi her dosyanın ne içerdiğini görelim:
[jerry]$ cat Martin.txtYukarı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 
6) A Game of Thrones, George R. R. Martin, 864Dosya içeriğini gösterelim.
[jerry]$ cat Paulo.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
3) The Alchemist, Paulo Coelho, 197 
5) The Pilgrimage, Paulo Coelho, 288Dosya içeriğini gösterelim.
[jerry]$ cat Tolkien.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
2) The Two Towers, J. R. R. Tolkien, 352 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432Mükemmel! Beklenen sonucu aldık. SED gerçekten harika bir yardımcı programdır.
Komut Ekle
Herhangi bir metin düzenleyicinin en kullanışlı işlemlerinden biri, ekleme işlevselliği sağlamaktır. SED, bu işlemi append komutuyla destekler. Ekleme sözdizimi aşağıda verilmiştir:
[address]a\ 
Append text4. satırdan sonra yeni bir kitap girişi ekleyelim. Aşağıdaki örnek bunun nasıl yapılacağını göstermektedir
[jerry]$ sed '4 a 7) Adultry, Paulo Coelho, 234' books.txtYukarı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 
7) Adultry, Paulo Coelho, 234 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864Komut bölümünde, 4 satır numarasını ima eder, a ekleme komutu ve kalan kısım eklenecek metindir.
Dosyanın sonuna bir metin satırı ekleyelim. Bunu yapmak için kullanın$adres olarak. Aşağıdaki örnek bunu göstermektedir:
[jerry]$ sed '$ a 7) Adultry, Paulo Coelho, 234' books.txtYukarı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 
7) Adultry, Paulo Coelho, 234Satır numarasının yanı sıra, metinsel desen kullanarak da bir adres belirleyebiliriz. Örneğin, aşağıdaki örnek, dizeyle eşleştikten sonra metni eklerThe Alchemist.
[jerry]$ sed '/The Alchemist/ a 7) Adultry, Paulo Coelho, 234' books.txtYukarı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 
7) Adultry, Paulo Coelho, 234 
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, 864Eşleşen birden fazla desen varsa, metnin her eşleşmeden sonra eklendiğini unutmayın. Aşağıdaki örnek bu senaryoyu göstermektedir.
[jerry]$ sed '/The/ a 7) Adultry, Paulo Coelho, 234' books.txtYukarı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 
7) Adultry, Paulo Coelho, 234 
3) The Alchemist, Paulo Coelho, 197 
7) Adultry, Paulo Coelho, 234 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
7) Adultry, Paulo Coelho, 234 
5) The Pilgrimage, Paulo Coelho, 288 
7) Adultry, Paulo Coelho, 234 
6) A Game of Thrones, George R. R. Martin, 864Komutu Değiştir
SED sağlar change veya replacec ile temsil edilen komut. Bu komut, mevcut bir satırı yeni metinle değiştirmeye yardımcı olur. Satır aralığı sağlandığında, tüm satırlar bir grup olarak tek bir metin satırıyla değiştirilir. Aşağıda, değiştirme komutunun sözdizimi verilmiştir:
[address1[,address2]]c\ 
Replace textÜçüncü satırı başka bir metinle değiştirelim.
[jerry]$ sed '3 c 3) Adultry, Paulo Coelho, 324' books.txtYukarı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) Adultry, Paulo Coelho, 324 
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, 864SED ayrıca desenleri bir adres olarak kabul eder. Aşağıdaki örnekte, desen eşleşmesi başarılı olduğunda bir satır değiştirilir.
[jerry]$ sed '/The Alchemist/ c 3) Adultry, Paulo Coelho, 324' books.txtYukarı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) Adultry, Paulo Coelho, 324 
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, 864SED ayrıca birden fazla hattın tek bir hatla değiştirilmesine izin verir. Aşağıdaki örnek, dördüncü ile altıncı arasındaki satırları kaldırır ve bunları yeni metinle değiştirir.
[jerry]$ sed '4, 6 c 4) Adultry, Paulo Coelho, 324' books.txtYukarı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) Adultry, Paulo Coelho, 324Komut Ekle
İnsert komutu, append ile aynı şekilde çalışır. Tek fark, belirli bir konumdan önce bir satır eklemesidir. Aşağıda, insert komutunun sözdizimi verilmiştir:
[address]i\ 
Insert textEkleme komutunu bazı örneklerle anlayalım. Aşağıdaki komut, dördüncü satırdan önce yeni bir giriş ekler.
[jerry]$ sed '4 i 7) Adultry, Paulo Coelho, 324' books.txtYukarı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 
7) Adultry, Paulo Coelho, 324 
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, 864Yukarıdaki örnekte, 4 konum numarası, i insert komutunu belirtir ve kalan kısım eklenecek metindir.
Bir dosyanın başlangıcına metin eklemek için, satır adresini şu şekilde girin: 1. Aşağıdaki komut bunu göstermektedir:
[jerry]$ sed '1 i 7) Adultry, Paulo Coelho, 324' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
7) Adultry, Paulo Coelho, 3241) 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, 864Ek olarak, birden çok satır ekleyebiliriz. Aşağıdaki komut, son satırdan önce iki satır ekler.
[jerry]$ sed '$ i 7) Adultry, Paulo Coelho, 324Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
8) Eleven Minutes, Paulo Coelho, 304' books.txt 
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 
7) Adultry, Paulo Coelho, 324 
8) Eleven Minutes, Paulo Coelho, 304 
6) A Game of Thrones, George R. R. Martin, 864Eklenecek girişlerin ayrı satırlara girildiğini ve ters eğik çizgi (\) karakteriyle sınırlandırıldığını unutmayın.
Komutu Çevir
SED, karakterleri çevirmek için bir komut sağlar ve şu şekilde temsil edilir: y. Karakterleri konuma göre dönüştürür. Translate komutunun sözdizimi aşağıda verilmiştir:
[address1[,address2]]y/list-1/list-2/Çevirinin karakterin konumuna göre yapıldığına dikkat edin. list 1 aynı konumdaki karaktere list 2ve her iki liste de açık karakter listeleri olmalıdır. Normal ifadeler ve karakter sınıfları desteklenmez. Ek olarak, boyutulist 1 ve list 2 aynı olmalı.
Aşağıdaki örnek, Arapça sayıları Roma rakamlarına dönüştürür.
[jerry]$ echo "1 5 15 20" | sed 'y/151520/IVXVXX/'Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
I V IV XXben komut
Boşluklarla ayrılmış sözcükler ile sekme karakterleriyle ayrılmış sözcükleri yalnızca onlara bakarak ayırt edebilir misiniz? Kesinlikle değil. Ancak SED bunu sizin için yapabilir. SED,lmetindeki gizli karakterleri görüntülemek için komut. Örneğin, sekme karakteri\t ve Hat Sonu $karakter. Aşağıda verilen sözdizimil komut.
[address1[,address2]]l 
[address1[,address2]]l [len]Gösterim için sekme karakterleri içeren bir dosya oluşturalım. Basit olması için, boşlukları sekmelerle değiştirerek aynı dosyayı kullanacağız. Bekle! Ancak bunu nasıl yapmalı - dosyayı bir metin düzenleyicide açıp her boşluğu sekme ile değiştirerek? Kesinlikle değil! Bunun için SED komutlarını kullanabiliriz.
[jerry]$ sed 's/ /\t/g' books.txt > junk.txtŞimdi gizli karakterleri kullanarak l komut:
[jerry]$ sed -n 'l' junk.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
1)\tA\tStorm\tof\tSwords,George\tR.\tR.\tMartin,1216$ 
2)\tThe\tTwo\tTowers,J.\tR.\tR.\tTolkien,352$ 
3)\tThe\tAlchemist,Paulo\tCoelho,197$ 
4)\tThe\tFellowship\tof\tthe\tRing,J.\tR.\tR.\tTolkien,432$ 
5)\tThe\tPilgrimage,Paulo\tCoelho,288$ 
6)\tA\tGame\tof\tThrones,George\tR.\tR.\tMartin\t,864$Diğer SED komutları gibi, satır numaralarını ve desenleri de adres olarak kabul eder. Kendiniz deneyebilirsiniz.
Gelin SED'nin bir başka ilginç özelliğine yakından bakalım. SED'ye belirli sayıda karakterden sonra satır kaydırma yapması talimatını verebiliriz. Aşağıdaki örnek satırları 25 karakterden sonra kaydırır.
[jerry]$ sed -n 'l 25' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
1) A Storm of Swords,Geo\ 
rge R. R. Martin,1216$ 
2) The Two Towers,J. R. \ 
R. Tolkien,352$ 
3) The Alchemist,Paulo C\ 
oelho,197$ 
4) The Fellowship of the\ 
 Ring,J. R. R. Tolkien,4\ 
32$ 
5) The Pilgrimage,Paulo \ 
Coelho,288$ 
6) A Game of Thrones,Geo\ 
rge R. R. Martin ,864$Yukarıdaki örnekte, sarma sınırının l komutundan sonra sağlandığını unutmayın. Bu durumda 25 karakterdir. Bu seçenek GNU'ya özeldir ve SED'nin diğer varyantlarıyla çalışmayabilir.
0 kaydırma sınırı, yeni bir satır karakteri olmadığı sürece satırı asla kesmeyeceği anlamına gelir. Aşağıdaki basit komut bunu göstermektedir.
[jerry]$ sed -n 'l 0' books.txtYukarı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$Komuttan Çık
Çıkış komutu, SED'ye mevcut yürütme akışından çıkması talimatını verir. Tarafından temsil edilirqkomut. Aşağıda, çıkış komutunun sözdizimi verilmiştir:
[address]q 
[address]q [value]Quit komutunun adres aralığını kabul etmediğini, yalnızca tek bir adresi desteklediğini unutmayın. Varsayılan olarak SED, okuma, yürütme ve tekrar iş akışını izler; ancak quit komutuyla karşılaşıldığında, basitçe mevcut yürütmeyi durdurur.
Dosyadan ilk 3 satırı yazdıralım.
[jerry]$ sed '3 q' books.txtYukarı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, 197Satır numarasına ek olarak, metinsel desenler de kullanabiliriz. Desen eşleşmesi başarılı olduğunda aşağıdaki komut çıkar.
[jerry]$ sed '/The Alchemist/ q' books.txtYukarı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, 197Buna ek olarak, SED ayrıca bir valueçıkış durumu olarak kullanılabilir. Aşağıdaki komut çıkış durumunu 100 olarak gösterir.
[jerry]$ sed '/The Alchemist/ q 100' books.txtYukarı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Şimdi çıkış durumunu doğrulayalım.
[jerry]$ echo $?Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
100Komutu Oku
SED'ye bir dosyanın içeriğini okuması ve belirli bir koşul eşleştiğinde bunları görüntülemesi talimatını verebiliriz. Komut alfabeyle temsil edilirr. Aşağıda, okuma komutunun sözdizimi verilmiştir.
[address]r fileArasında tam olarak bir boşluk olması gerektiğini unutmayın. r komut ve dosya adı.
Bunu basit bir örnekle anlayalım. Adlı bir örnek dosya oluşturunjunk.txt.
[jerry]$ echo "This is junk text." > junk.txtAşağıdaki komut, SED'ye belgenin içeriğini okumasını söyler. junk.txt ve üçüncü satırdan sonra ekleyin.
[jerry]$ sed '3 r junk.txt' books.txtYukarı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 
This is junk text. 
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, 864Yukarıdaki örnekte 3, satır adresini ima eder, r komut adıdır ve junk.txtiçeriği görüntülenecek dosya adıdır. Ek olarak, GNU SED ayrıca bir dizi adresi kabul eder. Örneğin, aşağıdaki komut içeriğijunk.txt üçüncü, dördüncü ve beşinci satırlardan sonra.
[jerry]$ sed '3, 5 r junk.txt' books.txtYukarı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 
This is junk text. 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
This is junk text. 
5) The Pilgrimage, Paulo Coelho, 288 
This is junk text. 
6) A Game of Thrones, George R. R. Martin, 864Diğer SED komutları gibi, okuma komutu da deseni bir adres olarak kabul eder. Örneğin, aşağıdaki komut içeriğijunk.txt desen eşleşmesi başarılı olduğunda.
[jerry]$ sed '/Paulo/ r junk.txt' books.txtYukarı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 
This is junk text. 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
5) The Pilgrimage, Paulo Coelho, 288 
This is junk text. 
6) A Game of Thrones, George R. R. Martin, 864Komutu çalıştır
Kullanarak SED'den harici komutları çalıştırabiliriz. executekomut. Tarafından temsil edilmektedire. Aşağıda, yürütme komutunun sözdizimi verilmiştir.
[address1[,address2]]e [command]Basit bir örnekle execute komutunu gösterelim. Aşağıdaki SED komutu UNIX'i yürütürdate üçüncü satırdan önce komut.
[jerry]$ sed '3 e date' books.txtYukarı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 
Sun Sep  7 18:04:49 IST 2014 
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, 864Diğer komutlar gibi, desenleri de adres olarak kabul eder. Örneğin, aşağıdaki örnek,datebir kalıp eşleşmesi başarılı olduğunda komut. Her desen eşleşmesinden sonra, önce komutun yürütüldüğünü ve ardından desen tamponunun içeriğinin görüntülendiğini unutmayın.
[jerry]$ sed '/Paulo/ e date' books.txtYukarı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 
Sun Sep  7 18:06:04 IST 2014 
3) The Alchemist, Paulo Coelho, 197 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
Sun Sep  7 18:06:04 IST 2014 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864Sözdizimini gözlemlerseniz e dikkatlice komut verin, fark edeceksiniz commandİsteğe bağlı. Sonra hiçbir komut sağlanmadığındae,desen tamponunun içeriğini harici bir komut olarak değerlendirir. Bunu açıklamak için, birkaç basit komutla bir commands.txt dosyası oluşturalım.
[jerry]$ echo -e "date\ncal\nuname" > commands.txt 
[jerry]$ cat commands.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
date 
cal 
unameDosyadaki komutlar kendinden açıklamalıdır. Yokluğundacommand sonra e,SED tüm bu komutları tek tek yürütür. Aşağıdaki basit örnek bunu göstermektedir.
[jerry]$ sed 'e' commands.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
Sun Sep  7 18:14:20 IST 2014 
   September 2014      
Su Mo Tu We Th Fr Sa   
    1  2  3  4  5  6   
 7  8  9 10 11 12 13   
14 15 16 17 18 19 20   
21 22 23 24 25 26 27   
28 29 30               
                       
LinuxDiğer SED komutları gibi, execute komutu da tüm geçerli adres aralıklarını kabul eder.
Çeşitli Komutlar
Varsayılan olarak, SED tek hat üzerinde çalışır, ancak birden fazla hat üzerinde de çalışabilir. Çok satırlı komutlar büyük harflerle gösterilir. Örneğin,n komut Nkomutu desen alanını temizlemiyor ve yazdırmıyor. Bunun yerine, geçerli desen boşluğunun sonuna bir satırsonu (\ n) ekler ve bir sonraki satırı girdi dosyasından geçerli desen alanına ekler ve SED komutlarının geri kalanını çalıştırarak SED'in standart akışıyla devam eder. Aşağıda verilen sözdizimiN komut.
[address1[,address2]]NKitap başlıklarının ve ilgili yazarlarının virgülle ayrılmış bir listesini yazdıralım. Aşağıdaki örnek bunu göstermektedir.
[jerry]$ sed 'N; s/\n/, /g' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
A Storm of Swords, George R. R. Martin 
The Two Towers, J. R. R. Tolkien 
The Alchemist, Paulo Coelho 
The Fellowship of the Ring, J. R. R. Tolkien 
The Pilgrimage, Paulo Coelho 
A Game of Thrones, George R. R. MartinYukarıdaki örneğin nasıl çalıştığını anlayalım. Nkomutu ilk satırı okur, yani Kılıçların Fırtınası model arabelleğine \ n ve ardından sonraki satırı ekler. Desen alanı artık Kılıçların Fırtınası'nı içeriyor\nGeorge RR Martin. Bir sonraki adımda, yeni satırı virgül ile değiştiriyoruz.
Sevmek p komutumuz var P tarafından oluşturulan çok satırlı desen boşluğunun ilk bölümünü (gömülü satırsonuna kadar) yazdırmak için komut Nkomut. Aşağıda verilen sözdizimiP benzer komut p komut.
[address1[,address2]]PÖnceki örnekte, Nkomutu, kitap başlıklarının ve yazarlarının yeni satırlarla ayrılmış bir listesini oluşturur. Sadece ilk kısmını, yani sadece kitabın başlıklarını yazdıralım. Aşağıdaki komut bunu göstermektedir.
[jerry]$ sed -n 'N;P' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
A Storm of Swords 
The Two Towers 
The Alchemist 
The Fellowship of the Ring 
The Pilgrimage 
A Game of ThronesYokluğunda Naynı şekilde davranır pkomut. Aşağıdaki basit komut bu senaryoyu göstermektedir.
[jerry]$ sed -n 'P' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
A Storm of Swords 
George R. R. Martin 
The Two Towers 
J. R. R. Tolkien 
The Alchemist 
Paulo Coelho 
The Fellowship of the Ring 
J. R. R. Tolkien 
The Pilgrimage 
Paulo Coelho 
A Game of Thrones 
George R. R. MartinBuna ek olarak, SED ayrıca bir vsürümü kontrol eden komut. Sağlanan sürüm, kurulu SED sürümünden daha büyükse, komut yürütme başarısız olur. Bu seçeneğin GNU'ya özgü olduğunu ve diğer SED varyantlarıyla çalışmayabileceğini unutmayın. Aşağıda verilen sözdizimiv komut.
[address1[,address2]]v [version]İlk olarak, SED'nin güncel sürümünü bulun.
[jerry]$ sed --versionYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
sed (GNU sed) 4.2.2Aşağıdaki örnekte, SED sürümü 4.2.2 sürümünden daha büyüktür, bu nedenle SED komutu yürütmeyi durdurur.
[jerry]$ sed 'v 4.2.3' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
sed: -e expression #1, char 7: expected newer version of sedAncak sağlanan sürüm 4.2.2 sürümünden küçükse veya ona eşitse, komut beklendiği gibi çalışır.
[jerry]$ sed 'v 4.2.2' books.txtYukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:
A Storm of Swords 
George R. R. Martin 
The Two Towers 
J. R. R. Tolkien 
The Alchemist 
Paulo Coelho 
The Fellowship of the Ring 
J. R. R. Tolkien 
The Pilgrimage 
Paulo Coelho 
A Game of Thrones George R. R. Martin