Stream Editor - Sintaks Dasar

Bab ini memperkenalkan perintah dasar yang didukung SED dan sintaks baris perintahnya. SED dapat dipanggil dalam dua bentuk berikut:

sed [-n] [-e] 'command(s)' files 
sed [-n] -f scriptfile files

Bentuk pertama memungkinkan untuk menentukan perintah dalam baris dan mereka diapit dalam tanda kutip tunggal. Nanti memungkinkan untuk menentukan file skrip yang berisi perintah SED. Namun, kita dapat menggunakan kedua bentuk tersebut secara bersamaan beberapa kali. SED menyediakan berbagai opsi baris perintah untuk mengontrol perilakunya.

Mari kita lihat bagaimana kita dapat menentukan beberapa perintah SED. SED menyediakandeleteperintah untuk menghapus baris tertentu. Mari kita hapus baris ke-1, ke-2, dan ke-5. Untuk saat ini, abaikan semua detail dari perintah delete. Kami akan membahas lebih lanjut tentang perintah hapus nanti.

Pertama, tampilkan konten file menggunakan cat perintah.

[jerry]$ cat books.txt

Saat menjalankan kode di atas, Anda mendapatkan hasil sebagai berikut:

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

Sekarang perintahkan SED untuk hanya menghapus baris tertentu. Di sini, untuk menghapus tiga baris, kami telah menentukan tiga perintah terpisah dengan opsi -e.

[jerry]$ sed -e '1d' -e '2d' -e '5d' books.txt

Saat menjalankan kode di atas, Anda mendapatkan hasil sebagai berikut:

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

Selain itu, kami dapat menulis beberapa perintah SED dalam file teks dan menyediakan file teks tersebut sebagai argumen untuk SED. SED dapat menerapkan setiap perintah pada buffer pola. Contoh berikut menggambarkan bentuk kedua SED.

Pertama, buat file teks yang berisi perintah SED. Untuk pemahaman yang mudah, mari kita gunakan perintah SED yang sama.

[jerry]$ echo -e "1d\n2d\n5d" > commands.txt [jerry]$ cat commands.txt

Saat menjalankan kode di atas, Anda mendapatkan hasil sebagai berikut:

1d 
2d 
5d

Sekarang perintahkan SED untuk membaca perintah dari file teks. Di sini, kami mencapai hasil yang sama seperti yang ditunjukkan pada contoh di atas.

[jerry]$ sed -f commands.txt books.txt

Saat menjalankan kode di atas, Anda mendapatkan hasil sebagai berikut:

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

Opsi Standar

SED mendukung opsi standar berikut:

  • -n: Pencetakan default penyangga pola. Misalnya, perintah SED berikut tidak menampilkan output apa pun:

  • [jerry]$ sed -n '' quote.txt
  • -e : Argumen berikutnya adalah perintah pengeditan. Di sini, tanda kurung sudut menyiratkan parameter wajib. Dengan menggunakan opsi ini, kita dapat menentukan banyak perintah. Mari kita cetak setiap baris dua kali:

  • [jerry]$ sed -e '' -e 'p' quote.txt

Saat menjalankan kode di atas, Anda mendapatkan 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. 
 - Paulo Coelho, The Alchemist 
 - Paulo Coelho, The Alchemist
  • -f : Argumen berikutnya adalah file yang berisi perintah pengeditan. Tanda kurung sudut menyiratkan parameter wajib. Dalam contoh berikut, kami menentukan perintah cetak melalui file:

[jerry]$ echo "p" > commands 
[jerry]$ sed -n -f commands quote.txt

Saat menjalankan kode di atas, Anda mendapatkan hasil sebagai berikut:

There is only one thing that makes a dream impossible to achieve: the fear of failure. 
 - Paulo Coelho, The Alchemist

Opsi Khusus GNU

Mari kita segera membahas opsi SED spesifik GNU. Perhatikan bahwa opsi ini khusus untuk GNU; dan mungkin tidak didukung oleh varian lain dari SED. Di bagian selanjutnya, kami akan membahas opsi ini lebih detail.

  • -n, --quiet, --silent: Sama seperti opsi -n standar.

  • -e script, --expression = script: Sama seperti opsi -e standar.

  • -f script-file, --file = script-file: Sama seperti opsi -f standar.

  • --follow-symlinks: Jika opsi ini disediakan, SED mengikuti tautan simbolis saat mengedit file.

  • -i [SUFFIX], --in-place [= SUFFIX]: Opsi ini digunakan untuk mengedit file di tempat. Jika sufiks disediakan, dibutuhkan cadangan dari file asli, jika tidak maka akan menimpa file asli.

  • -l N, --line-lenght = N: Opsi ini menyetel panjang baris untuk perintah l menjadi N karakter.

  • --posix: Opsi ini menonaktifkan semua ekstensi GNU.

  • -r, --regexp-extended: Opsi ini memungkinkan untuk menggunakan ekspresi reguler yang diperluas daripada ekspresi reguler dasar.

  • -u, --unbuffered: Jika opsi ini disediakan, SED memuat data dalam jumlah minimal dari file input dan lebih sering membersihkan buffer output. Berguna untuk mengedit keluaran "tail -f" bila Anda tidak ingin menunggu keluarannya.

  • -z, --null-data: Secara default, SED memisahkan setiap baris dengan karakter baris baru. Jika opsi NULL-data disediakan, itu memisahkan baris dengan karakter NULL.