Tutorial Sed untuk Memanipulasi Teks di Linux

Sed merupakan singkatan dari Stream editor, ia dapat digunakan untuk memanipulasi teks pada sebuah file, misalnya untuk menemukan & mengganti teks pada file dan menghapus kata tertentu pada file.

Penggunaan Dasar Sed

Sed biasa digunakan untuk mengganti teks pada sebuah file.

Misalnya, penggunaan dasar sed berikut untuk mengganti kata ‘wedus’ menjadi ‘hello’.

$ echo 'wedus world' | sed 's/wedus/hello/'

Contoh perintah di atas merupakan penggunaan sed untuk memanipulasi teks yang datanya berasal dari stdin (Standard Input).

Untuk memanipulasi teks yang berasal dari file, maka perintahnya menjadi seperti berikut.

$ sed 's/wedus/world' file.txt

Default-nya hasil manipulasi teks oleh sed akan dikirim ke stdout (Standard Output), dengan demikian hasil stdout tersebut dapat disimpan sebagai file baru seperti pada perintah berikut.

$ sed 's/wedus/world' file.txt > new-file.txt

Untuk manipulasi teks tetapi hasilnya tetap disimpan pada file yang sama, gunakan opsi -i seperti pada perintah berikut.

$ sed -i 's/wedus/world' file.txt

Regular Expression

Kalian dapat menggunakan Regular Expression pada perintah sed untuk memanipulasi teks.

Aku asumsikan kalian sudah paham tentang Regular Expression, jadi panduan ini tidak menjelaskan secara detail mengenai RegEx.

Lanjut ke contoh, perintah berikut ini untuk mengganti kata ‘wedus’ dan ‘apel’ menjadi ‘linus’ dengan RegEx.

$ echo 'wedus apel world' | sed -E 's/(wedus|apel)/linus/g'

Kita perlu mengaktifkan opsi -E agar bisa menggunakan fitur Extended RegEx pada sed dan mengaktifkan flag g agar semua hasil yang cocok dengan regex akan diganti menjadi linus.

Dengan sed ini, kalian juga dapat melakukan capturing group seperti pada contoh perintah berikut.

$ echo 'belajar linux memang asik' | sed -E 's/^belajar (linux) memang (asik)$/\1 pasti \2/'

Contoh perintah untuk mengambil teks yang cocok dengan pola ^belajar (linux) memang (asik)$ dan menggantinya dengan \1 pasti \2, sehingga hasilnya adalah linux pasti asik.

Contoh Penggunaan Sed

Berikut ini contoh penggunaan Sed yang paling sering digunakan.

Mengganti CRLF menjadi LF

$ 's/^M$//' file.txt

Menghapus baris terakhir

$ sed '$d' file.txt

Memanipulasi teks pada baris kedua

$ sed '2 s/hello/hola/' file.txt

Menghapus komentar ”#”

$ sed 's/#.*$//' script.sh

Melakukan banyak operasi Sed

$ sed -e 's/hello/halo/' -e 's/world/dunia/'

Menghapus baris 4-7

$ sed '4,7d' file.txt

Menghapus baris yang kosong

$ sed '/^$/d' file.txt

Penutup

Yah itu saja mengenai penggunaan dasar Sed, sebenarnya masih banyak yang dapat dilakukan dengan Sed ini, jika kalian ingin tahu lebih detail, dapat membaca laman manual GNU sed.

Sekian, dan semoga bermanfaat.