Sed adalah program UNIX sederhana. Itu tidak membuat dan mengedit file. Itu hanya memodifikasi data yang melewati inputnya dan menyajikan data yang dimodifikasi pada outputnya. Meskipun demikian, sed dianggap sebagai salah satu utilitas UNIX yang paling kuat yang akan Anda temui di Linux, terutama ketika dikombinasikan dengan program lain di sistem Anda.
Artikel ini bertujuan untuk mengajarkan dasar-dasar bagaimana menggunakan program kecil ini. Selanjutnya, ini juga akan memberikan gambaran singkat tentang filosofi UNIX dan bagaimana ide itu penting dalam memahami cara kerja komputer Anda.
Apa Filosofi UNIX?
Filosofi UNIX adalah gagasan bahwa sebuah program seharusnya hanya melakukan satu tugas dan melakukannya dengan baik. Ini mendorong Anda untuk menulis program sederhana yang dapat Anda gunakan kembali untuk fungsi yang berbeda daripada membuat program kompleks yang tidak dapat Anda gunakan kembali untuk tugas lain.
Sebuah contoh yang baik dari ini adalah program cat
. Ini adalah utilitas sederhana yang hanya mengambil input dan mencetaknya sebagai aliran teks.
Filosofi UNIX memungkinkan Anda untuk menggunakan program bersama dengan utilitas lain dalam sistem. Pada gilirannya, pendekatan ini pada akhirnya menciptakan satu antarmuka untuk sistem Anda yang dapat Anda pelajari sekali dan digunakan kembali untuk konteks yang berbeda.
Misalnya, Anda dapat memberi makan aliran kucing ke program seperti grep
. Ini adalah program sederhana yang hanya melakukan satu hal. Itu mencari string teks dalam input dan mencetak baris di mana teks itu muncul.
Di sisi lain, Anda dapat memberi makan aliran kucing yang sama ke pager layar seperti less
. Ini, pada gilirannya, akan memungkinkan Anda untuk menggulir aliran seolah-olah itu adalah file teks tunggal.
Bagaimana Sed Bekerja?
Dengan itu, sed adalah program yang membaca aliran teks dan memodifikasinya. Namun, sed hanya memodifikasi aliran teks, yang berarti tidak secara langsung mengubah file di komputer Anda. Ini bisa membingungkan bagi pemula karena perubahan apa pun yang Anda buat di sed tidak akan muncul di disk.
Meskipun demikian, sed masih merupakan utilitas yang kuat. Misalnya, Anda dapat menjalankan baris berikut untuk membaca output dari printf
memerintah:
printf "hello\nmaketecheasier\nworld\n" | sed n
Dasar-dasar Menggunakan Sed
Mengetahui hal itu, sangat mudah menggunakan sed untuk tugas-tugas dasar. Perhatikan contoh berikut:
Dalam hal ini, saya menggunakan n
perintah untuk mencetak isi file “halo”.
1. Memilih dan Memangkas Aliran Teks
Selanjutnya, Anda juga dapat memberi tahu sed untuk memodifikasi aliran teks ini. Misalnya, Anda dapat menggunakan 2q
perintah untuk memberitahunya agar hanya mencetak dua baris pertama dari file “halo”:
Ini bisa sangat membantu jika Anda hanya ingin mendapatkan beberapa baris pertama dari file teks. Namun, Anda juga dapat menggunakan p
perintah untuk memberi tahu sed agar hanya mencetak rentang baris dalam file.
Pada contoh di atas, saya menggunakan sed untuk mencetak baris ketiga dan keempat dari file “halo”. Anda juga dapat menggunakan yang sama p
perintah untuk mencetak baris yang tidak berdekatan dalam file teks Anda. Perhatikan contoh berikut:
Dengan itu, saya memberi tahu sed untuk hanya mencetak baris pertama dan keempat dari file “halo”. Ini bisa berguna jika Anda ingin menggabungkan beberapa baris dari aliran yang berbeda menjadi satu file.
Misalnya, Anda dapat menggunakan sed dengan >
operator untuk menulis aliran yang dimodifikasi ke file.
sed -n 1~4p hello.txt > welcome.txt
2. Menghapus Teks
Fungsi hebat lainnya dari sed adalah dengan menghapus teks dalam aliran. Tidak seperti pencetakan, ini memungkinkan Anda untuk memilih baris teks yang ingin Anda hilangkan dari aliran.
Misalnya, saya menggunakan d
perintah untuk menghapus baris kedua dan kelima dari file hello.
Salah satu keuntungan menggunakan ini daripada p
perintahnya adalah ini memungkinkan Anda untuk hanya menghapus baris yang tidak Anda inginkan. Ini berguna jika Anda ingin membersihkan file besar atau memangkas output untuk hanya menampilkan informasi yang Anda butuhkan.
3. Menambahkan Teks Baru
Dengan itu, Anda juga dapat menggunakan sed dengan dirinya sendiri untuk memasukkan data baru ke dalam aliran teks Anda. Misalnya, Anda dapat menggunakan a
perintah untuk menambahkan sebaris teks ke aliran saat ini:
sed -n 2p hello.txt | sed a\ "this is a new line"
Selanjutnya, juga dimungkinkan untuk memasukkan seluruh file ke dalam aliran teks. Untuk melakukan ini, Anda dapat menggunakan r
perintah yang memungkinkan Anda membaca satu file ke aliran Anda saat ini. Untuk melakukannya, Anda dapat menjalankan perintah berikut untuk memasukkan file selamat datang setelah baris kedua hello.
sed -n 2p hello.txt | sed rwelcome.txt
4. Substitusi Teks dan Manipulasi Aliran
Salah satu penggunaan sed yang brilian adalah dengan memodifikasi aliran yang ada. Ini adalah saat Anda mengambil aliran input teks dan menggunakan fungsi bawaan sed untuk mengubah konten aliran.
Ini bisa dibilang fungsi sed yang paling kuat. Karena ini memberi Anda kemampuan untuk mengedit data secara dinamis saat melewati pipa. Misalnya, Anda dapat dengan mudah mengedit output program seolah-olah itu adalah file teks:
printf "hello\nmaketecheasier\nworld\n" | sed s/world/website/
Dalam contoh ini, saya menggunakan s
perintah untuk mengganti kata “dunia” dengan “situs web”. Tidak seperti perintah sebelumnya, bagaimanapun, perintah ini menggunakan sintaks tertentu untuk bekerja dengan baik.
Mengetahui hal itu, bentuk umum dari s
perintah terlihat seperti ini:
s/[regex]/(string)/{options}
- Kolom pertama menunjukkan bahwa ini adalah perintah pengganti. Dalam kebanyakan kasus, Anda hanya perlu menggunakan
s
perintah untuk mengubah aliran teks. - Kolom kedua menunjukkan kata yang ingin Anda ganti menggunakan ekspresi reguler struktural. Ini adalah cara mendeskripsikan kata dan tata bahasa menggunakan aturan umum. Misalnya, Anda dapat mendeskripsikan kata “cetakan”, “pangeran” dan “primer” dengan menulis
pri[n,m]..
. - Kolom ketiga menjelaskan kata yang Anda inginkan dari string lama. Berbeda dengan kolom sebelumnya, kolom ini tidak menggunakan ekspresi reguler. Sebagai gantinya, Anda dapat menggunakan teks biasa untuk mendeskripsikan kata baru Anda.
- Kolom terakhir memberi tahu sed untuk menerapkan opsi tambahan apa pun yang Anda perlukan untuk substitusi. Dalam hal itu, bendera paling umum yang mungkin ingin Anda gunakan adalah
g
. Ini menunjukkan bahwa perintah akan mengganti setiap instance regex dengan string baru.
5. Menggunakan Substitusi Teks dengan File
Anda dapat menerapkan s
perintah untuk memanipulasi segala jenis aliran teks yang Anda inginkan. Ini berguna tidak hanya karena memungkinkan Anda untuk memodifikasi data dengan cepat tetapi juga karena Anda dapat menggunakan ini dengan hampir semua hal di baris perintah Linux.
Misalnya, Anda dapat menggunakan s
perintah dengan file teks dengan menambahkan nama file di akhir perintah:
sed s/hello/welcome/ hello.txt
Dalam hal ini, saya menyuruh sed untuk membaca file “halo” dan mengganti contoh pertama dari kata “halo” dengan “selamat datang”. Saya kemudian dapat melakukan ini untuk setiap contoh kata “halo” dalam file dengan menambahkan g
pilihan:
sed s/hello/welcome/g hello.txt
Pertanyaan yang Sering Diajukan
Apakah mungkin untuk menulis modifikasi ke file menggunakan sed?
Ya! Selain menggunakan operator file, dimungkinkan untuk menggunakan sed untuk secara langsung menulis aliran teks apa pun yang dimodifikasi ke file. Untuk melakukan ini, Anda dapat menggunakan sed dengan -i
tandai atau gunakan w
perintah untuk menulis aliran ke file.
Namun, satu hal penting yang perlu diperhatikan adalah bahwa perintah ini tidak sesuai dengan standar POSIX. Ini berarti bahwa ini tidak akan berfungsi jika Anda menggunakan sed versi non-GNU.
Saya mendapatkan kesalahan “tidak terputus” setiap kali saya menggunakan sed. Apakah instalasi saya rusak?
Tidak semuanya! Ini adalah masalah yang terjadi ketika Anda tidak menulis perintah sed dengan benar. Ini biasa terjadi dengan perintah substitusi di mana Anda mencoba mencocokkan atau mengganti string dengan spasi.
Misalnya, menjalankan perintah berikut akan menghasilkan kesalahan “tidak diakhiri”: sed s/hello/welcome back/g hello.txt
.
Anda dapat memperbaikinya dengan menambahkan karakter escape “\” sebelum spasi Anda. Ini adalah karakter khusus yang memberitahu sed untuk memasukkan spasi saat mencari atau mengganti teks.
Dengan itu, versi yang benar dari perintah di atas terlihat seperti ini: sed s/hello/welcome\ back/g hello.txt
.
Selain “g”, apakah ada flag lain yang dapat saya gunakan dengan perintah “s”?
Ya! Selain g
Anda juga dapat menggunakan p
flag untuk memberi tahu sed agar menampilkan baris yang dimodifikasi.
Bendera lain yang dapat Anda gunakan dengan s
adalah e
. Ini memungkinkan Anda untuk menjalankan perintah shell setiap kali sed mengganti sebuah kata. Misalnya, Anda dapat menjalankan perintah berikut untuk menjalankan touch
setiap kali menemukan kata “halo” dalam file: sed s/hello\ /touch\ /e hello.txt
.
Terakhir, Anda juga dapat menggunakan i
flag untuk memberi tahu sed agar tidak peka huruf besar-kecil saat mencari kecocokan. Ini berguna jika Anda ingin mencocokkan kata yang sama tetapi dengan gaya huruf besar/kecil yang berbeda. Misalnya, perintah berikut akan mengganti kata “halo” dengan “selamat datang” terlepas dari kasusnya: sed s/HELLO/welcome/i hello.txt
.
Jika semua pembicaraan ini membuat Anda penasaran dengan baris perintah Linux. Anda dapat membaca artikel kami sebelumnya di mana kami berbicara tentang beberapa prompt Bash paling menarik yang dapat Anda gunakan hari ini.
Kredit gambar: Unsplash
Apakah artikel ini bermanfaat?
Berlangganan newsletter kami!
Tutorial terbaru kami dikirim langsung ke kotak masuk Anda