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]]d

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.

İ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.txt

Ama çı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.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 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

Ek 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.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 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

SED'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.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 
4) The Fellowship of the Ring, J. R. R. Tolkien, 432 
6) A Game of Thrones, George R. R. Martin, 864

Metinsel 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, 864

Buna 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 file

Buraya, 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.txt

Adlı 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:

0

Varsayabilirsiniz: 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.txt

Yukarı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, 864

Ayrı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.txt

Yukarı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.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 
6) A Game of Thrones, George R. R. Martin, 864

Dosya içeriğini gösterelim.

[jerry]$ cat Paulo.txt

Yukarı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, 288

Dosya içeriğini gösterelim.

[jerry]$ cat Tolkien.txt

Yukarı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

Mü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 text

4. 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.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 
7) Adultry, Paulo Coelho, 234 
5) The Pilgrimage, Paulo Coelho, 288 
6) A Game of Thrones, George R. R. Martin, 864

Komut 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.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 
7) Adultry, Paulo Coelho, 234

Satı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.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 
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, 864

Eş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.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 
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, 864

Komutu 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.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) 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, 864

SED 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.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) 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, 864

SED 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.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) Adultry, Paulo Coelho, 324

Komut 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 text

Ekleme 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.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 
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, 864

Yukarı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.txt

Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:

7) Adultry, Paulo Coelho, 324
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

Ek 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, 324

Yukarı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, 864

Eklenecek 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 XX

ben 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.txt

Yukarı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.txt

Yukarı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.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$

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.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

Satı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.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

Buna 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.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

Şimdi çıkış durumunu doğrulayalım.

[jerry]$ echo $?

Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:

100

Komutu 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 file

Arası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.txt

Aş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.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 
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, 864

Yukarı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.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 
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, 864

Diğ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.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 
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, 864

Komutu ç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.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 
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, 864

Diğ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.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 
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, 864

Sö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.txt

Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:

date 
cal 
uname

Dosyadaki 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.txt

Yukarı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               
                       
Linux

Diğ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]]N

Kitap 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.txt

Yukarı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

Yukarı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.txt

Yukarı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 Thrones

Yokluğunda Naynı şekilde davranır pkomut. Aşağıdaki basit komut bu senaryoyu göstermektedir.

[jerry]$ sed -n 'P' books.txt

Yukarı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

Buna 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 --version

Yukarıdaki kodu çalıştırdığınızda, aşağıdaki sonucu alırsınız:

sed (GNU sed) 4.2.2

Aş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.txt

Yukarı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 sed

Ancak 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.txt

Yukarı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