Stream Editor - Alur Kerja

Dalam bab ini, kita akan membahas bagaimana tepatnya SED bekerja. Untuk menjadi pengguna SED yang ahli, seseorang perlu mengetahui bagian dalamnya. SED mengikuti alur kerja sederhana: Read, Execute, dan Display. Diagram berikut menggambarkan alur kerja.

  • Read: SED membaca baris dari aliran input (file, pipa, atau stdin) dan menyimpannya di buffer internalnya yang disebut pattern buffer.

  • Execute: Semua perintah SED diterapkan secara berurutan pada buffer pola. Secara default, perintah SED diterapkan di semua baris (secara global) kecuali pengalamatan baris ditentukan.

  • Display: Mengirim konten (dimodifikasi) ke aliran keluaran. Setelah mengirim data, buffer pola akan kosong.

  • Proses di atas berulang hingga file habis.

Poin yang Perlu Diperhatikan

  • Pola buffer adalah area penyimpanan pribadi, dalam memori, dan mudah menguap yang digunakan oleh SED.

  • Secara default, semua perintah SED diterapkan pada buffer pola, oleh karena itu file input tetap tidak berubah. GNU SED menyediakan cara untuk memodifikasi file input di tempat. Kami akan membahasnya di bagian selanjutnya.

  • Ada area memori lain yang disebut hold bufferyang juga merupakan area penyimpanan pribadi, dalam memori, dan mudah menguap. Data dapat disimpan dalam buffer tahan untuk pengambilan nanti. Di akhir setiap siklus, SED menghapus konten buffer pola tetapi konten buffer penahanan tetap ada di antara siklus SED. Namun perintah SED tidak dapat langsung dijalankan pada buffer penahan, oleh karena itu SED memungkinkan pergerakan data antara buffer penahan dan buffer pola.

  • Awalnya, buffer pola dan penahan kosong.

  • Jika tidak ada file masukan yang disediakan, maka SED menerima masukan dari aliran masukan standar (stdin).

  • Jika kisaran alamat tidak disediakan secara default, maka SED beroperasi di setiap baris.

Contoh

Mari kita buat file teks quote.txt berisi kutipan dari penulis terkenal Paulo Coelho.

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

Untuk memahami alur kerja SED, mari kita tampilkan konten file quote.txt menggunakan SED. Contoh ini mensimulasikan filecat perintah.

[jerry]$ sed '' quote.txt

Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.

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

Dalam contoh di atas, quote.txt adalah nama file input dan sebelumnya ada sepasang kutipan tunggal yang menyiratkan perintah SED. Mari kita mengungkap operasi ini.

Pertama SED membaca baris dari file input quote.txt dan menyimpannya dalam buffer polanya. Kemudian menerapkan perintah SED pada buffer pola. Dalam kasus kami, tidak ada perintah SED di sana, oleh karena itu tidak ada operasi yang dilakukan pada buffer pola. Akhirnya menghapus dan mencetak isi buffer pola pada keluaran standar. Sederhana bukan?

Dalam contoh berikut, SED menerima input dari aliran input standar.

[jerry]$ sed '' 
       
      

Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.

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.

Di sini, baris pertama dimasukkan melalui keyboard dan baris kedua adalah keluaran yang dihasilkan oleh SED. Untuk keluar dari sesi SED, tekan ctrl-D (^ D).