Editor Aliran - Penyangga Pola
Salah satu operasi dasar yang kami lakukan pada file apa pun adalah menampilkan isinya. Untuk tujuan ini, kita dapat menggunakan fileprintperintah yang mencetak konten buffer pola. Jadi mari kita pelajari lebih lanjut tentang buffer pola
Pertama buat file yang berisi nomor baris, nama buku, penulisnya, dan jumlah halaman. Dalam tutorial ini, kami akan menggunakan file ini. Anda dapat menggunakan file teks apa pun sesuai kenyamanan Anda. File teks kita akan terlihat seperti ini:
[jerry]$ vi 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
6) A Game of Thrones, George R. R. Martin, 864
Sekarang, mari kita cetak isi file.
[jerry]$ sed 'p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
1) A Storm of Swords, George R. R. Martin, 1216
1) A Storm of Swords, George R. R. Martin, 1216
2) The Two Towers, J. R. R. Tolkien, 352
2) The Two Towers, J. R. R. Tolkien, 352
3) The Alchemist, Paulo Coelho, 197
3) The Alchemist, Paulo Coelho, 197
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
4) The Fellowship of the Ring, J. R. R. Tolkien, 432
5) The Pilgrimage, Paulo Coelho, 288
5) The Pilgrimage, Paulo Coelho, 288
6) A Game of Thrones, George R. R. Martin, 864
6) A Game of Thrones, George R. R. Martin, 864
Anda mungkin bertanya-tanya mengapa setiap baris ditampilkan dua kali. Mari kita cari tahu.
Apakah Anda ingat alur kerja SED? Secara default, SED mencetak konten buffer pola. Selain itu, kami telah menyertakan perintah cetak secara eksplisit di bagian perintah kami. Karenanya setiap baris dicetak dua kali. Tapi jangan khawatir. SED memiliki-nopsi untuk menyembunyikan pencetakan default dari buffer pola. Perintah berikut mengilustrasikannya.
[jerry]$ sed -n 'p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan 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
Selamat! kami mendapatkan hasil yang diharapkan. Secara default, SED beroperasi di semua lini. Tetapi kami dapat memaksa SED untuk beroperasi hanya pada jalur tertentu. Misalnya, pada contoh di bawah ini, SED hanya beroperasi pada baris ke-3. Dalam contoh ini, kami telah menentukan rentang alamat sebelum perintah SED.
[jerry]$ sed -n '3p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
3) The Alchemist, Paulo Coelho, 197
Selain itu, kami juga dapat menginstruksikan SED untuk hanya mencetak baris tertentu. Misalnya, kode berikut mencetak semua baris dari 2 sampai 5. Di sini kita telah menggunakan operator koma (,) untuk menentukan kisaran alamat.
[jerry]$ sed -n '2,5 p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
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
Ada juga karakter khusus Dolar ($) yang mewakili baris terakhir file. Jadi mari kita cetak baris terakhir file tersebut.
[jerry]$ sed -n '$ p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
6) A Game of Thrones, George R. R. Martin, 864
Namun kita juga bisa menggunakan karakter Dollar ($) untuk menentukan kisaran alamat. Contoh di bawah ini mencetak melalui baris 3 hingga baris terakhir.
[jerry]$ sed -n '3,$ p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
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
Kami belajar bagaimana menentukan rentang alamat menggunakan operator koma (,). SED mendukung dua operator lagi yang dapat digunakan untuk menentukan kisaran alamat. Pertama adalah operator plus (+) dan dapat digunakan dengan operator koma (,). MisalnyaM, +n akan mencetak berikutnya n baris dimulai dari nomor baris M. Kedengarannya membingungkan? Mari kita periksa dengan contoh sederhana. Contoh berikut mencetak 4 baris berikutnya mulai dari baris nomor 2.
[jerry]$ sed -n '2,+4 p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
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
Secara opsional, kami juga dapat menentukan rentang alamat menggunakan operator tilde (~). Itu menggunakanM~nbentuk. Ini menunjukkan bahwa SED harus dimulai pada nomor baris M dan memproses setiap baris n (th). Misalnya,50~5cocok dengan nomor baris 50, 55, 60, 65, dan seterusnya. Mari kita mencetak hanya garis ganjil dari file tersebut.
[jerry]$ sed -n '1~2 p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
1) A Storm of Swords, George R. R. Martin, 1216
3) The Alchemist, Paulo Coelho, 197
5) The Pilgrimage, Paulo Coelho, 288
Kode berikut hanya mencetak baris genap dari file.
[jerry]$ sed -n '2~2 p' books.txt
Jika kode diatas dijalankan maka akan menghasilkan hasil sebagai berikut.
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