Akış Düzenleyici - İş Akışı

Bu bölümde, SED'nin tam olarak nasıl çalıştığını keşfedeceğiz. Uzman bir SED kullanıcısı olabilmek için, kişinin içsel özelliklerini bilmek gerekir. SED basit bir iş akışını takip eder: Oku, Yürüt ve Göster. Aşağıdaki şema iş akışını göstermektedir.

  • Read: SED, giriş akışından (dosya, boru veya stdin) bir satırı okur ve bunu adı verilen dahili tamponunda saklar pattern buffer.

  • Execute: Tüm SED komutları, model arabelleğine sıralı olarak uygulanır. Varsayılan olarak SED komutları, satır adresleme belirtilmediği sürece tüm satırlara (global olarak) uygulanır.

  • Display: (Değiştirilen) içerikleri çıktı akışına gönderin. Verileri gönderdikten sonra desen tamponu boş olacaktır.

  • Yukarıdaki işlem, dosya bitene kadar tekrar eder.

Dikkat Edilmesi Gereken Noktalar

  • Desen arabelleği, SED tarafından kullanılan özel, bellek içi, geçici bir depolama alanıdır.

  • Varsayılan olarak, tüm SED komutları model arabelleğine uygulanır, bu nedenle girdi dosyası değişmeden kalır. GNU SED, girdi dosyasını bir yerde değiştirmek için bir yol sağlar. Daha sonraki bölümlerde bunu inceleyeceğiz.

  • Adında başka bir hafıza alanı var hold bufferaynı zamanda özel, bellek içi, geçici depolama alanıdır. Veriler, daha sonra alınmak üzere bir tutma tamponunda saklanabilir. Her döngünün sonunda SED, model tamponunun içeriğini kaldırır, ancak tutma tamponunun içeriği SED döngüleri arasında kalıcı kalır. Bununla birlikte, SED komutları doğrudan tutma arabelleğinde yürütülemez, bu nedenle SED, tutma arabelleği ile desen arabelleği arasında veri hareketine izin verir.

  • Başlangıçta hem desen hem de tutma tamponları boştur.

  • Hiçbir girdi dosyası sağlanmadıysa, SED standart girdi akışından (stdin) girdi kabul eder.

  • Varsayılan olarak adres aralığı sağlanmadıysa, SED her satırda çalışır.

Örnekler

Bir metin dosyası oluşturalım quote.txt ünlü yazar Paulo Coelho'nun bir sözünü içerecek.

[jerry]$ vi quote.txt 
There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

SED'nin iş akışını anlamak için, SED'yi kullanarak quote.txt dosyasının içeriğini görüntüleyelim. Bu örnek,cat komut.

[jerry]$ sed '' quote.txt

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verecektir.

There is only one thing that makes a dream impossible to achieve: the fear of failure.

Yukarıdaki örnekte, quote.txt giriş dosyası adıdır ve ondan önce SED komutunu ifade eden bir çift tek tırnak vardır. Bu operasyonu aydınlatalım.

İlk olarak SED, quote.txt giriş dosyasından bir satırı okur ve onu şablon arabelleğinde saklar. Daha sonra model arabelleğine SED komutlarını uygular. Bizim durumumuzda hiçbir SED komutu yoktur, bu nedenle desen tamponunda hiçbir işlem gerçekleştirilmez. Son olarak, şablon tamponunun içeriğini siler ve standart çıktıya yazdırır. Basit değil mi?

Aşağıdaki örnekte, SED standart giriş akışından giriş kabul eder.

[jerry]$ sed '' 
       
      

Yukarıdaki kod çalıştırıldığında aşağıdaki sonucu verecektir.

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.

Burada ilk satır klavye ile girilir ve ikincisi SED tarafından üretilen çıktıdır. SED oturumundan çıkmak için ctrl-D (^ D) tuşlarına basın.