Thursday, January 24, 2019

Serba Serbi Stream Editor (SED) pada Linux

Stream Editor
Stream Editor atau sed adalah salah satu tool keren dan (biasanya) tersedia pada Unix dan keluarganya. Bahkan tool ini hampir ada di semua platform sistem operasi (monggo cek disini). Sehingga kita tidak perlu repot-repot menginstall benda keren ini.

Sesuai dengan namanya, tool ini mempermudah dalam proses memanipulasi string atau teks yang ada sebuah file atau output dari sebuah command line. Sehingga semisal kita perlu mengubah sebuah kata atau karakter pada sebuah file, kita tidak perlu repot-repot lagi membuka teks lalu me-replace kata perkata atau karakter perkarakter, cukup sekali eksekusi, maka kata atau karakter yang kita inginkan akan tergantikan.

Disini saya menggunakan distro Linux Ubuntu sebagai uji cobanya, jadi bisa saja perintah yang saya catat disini akan menghasilkan output yang berbeda, karena setau saya perintah sed pada tiap platform sistem operasi tidak sama persis walaupun identik. Tested di OSX Sierra.

Saya akan update catatan ini setiap kali saya menemukan tips atau trik dalam menggunakan command sed. Jadi silahkan boleh di bookmark urlnya. ;)

Hapus Menghapus
Menghapus line/beberapa line
sed "5d" [nama_file] #menghapus line ke 5
sed "2,7d" [nama_file] #menghapus line ke 2 sampai 7
sed "4d;100d;50d" [nama_file] #menghapus line ke 4,100 dan 50
Menghapus angka apapun dari sebuah string
echo "saya mempunyai uang 10 juta" | sed "s/[0-9]*//g" # contoh hapus angka 10
Menghapus kata tertentu dari sebuah string
echo "hapus aku dan aku lagi"|sed "s/aku //" # kata aku pertama akan hilang
Menghapus semua kata tertentu dari sebuah string
echo "hapus aku dan aku lagi"|sed "s/aku //g" # semua kata aku akan hilang

Sisip Menyisip
Menyisipkan string dengan line tertentu pada sebuah file
sed "4i ini tambahan line baru" [nama_file] # menambah string di line 4
Menyisipkan string dibawah line tertentu pada sebuah file
sed "4a ini tambahan line baru" [nama_file] # menambah string di line 5 
Menyisipkan kata/kalimat pada file di awal baris tertentu
sed --in-place "2 s/^/;/g[nama_file] # menyisipkan tanda ; di awal line 2
Menyisipkan kata/kalimat pada file di setiap awal baris baru
sed "s/^/awal kata /g" [nama_file]

Ganti Mengganti
Mengganti kata tertentu dengan kata lain pada sebuah file
sed "s/sejuta/semilyar/g" [nama_file]
 Mengganti baris baru menjadi spasi dalam file
sed ':a;N;$!ba;s/\n/ /g' [nama_file]
Mengganti spasi menjadi baris baru
sed 's/ /\n/g' [nama_file]
Mengganti kata tertentu pertama pada baris tertentu menjadi kata lain
sed "[nomor_baris] s/kataku/katanya/" [nama_file]
Mengganti semua kata tertentu pada baris tertentu menjadi kata lain
sed "[nomor_baris] s/kataku/katanya/g" [nama_file]
Mengganti baris baru (enter) menjadi spasi pada output stream
[command_dan_parameter] | sed ":a;N;$!ba;s/\n/ /g"

Spesifik Baris Tertentu
Memproses baris tertentu dengan menggunakan perintah sed
sed "[nomor_baris]N;s/\n//g" [nama_file] # menghapus baris baru/enter di baris tertentu
sed "[nomor_baris]N;s/biasa saja/ganteng/" [nama_file] # menimpa kata "biasa saja" pertama menjadi kata "ganteng" di baris tertentu
Menampilkan baris dengan nomor tertentu pada sebuah output
sed -n "[nomor_baris]p" file
sed -n "[nomor_baris],[nomor_baris]p" file
Timpa Ditempat
Jika anda ingin file "nama_file" di edit secara langsung (sehingga anda tidak repot-repot mengarahkan output ke file baru), anda bisa menambahkan opsi/parameter --in-place pada perintah-perintah diatas. contoh :

Menghapus baris ke lima pada file secara langsung
sed "5d" [nama_file] --in-place

Semoga bermanfaat.
referensi :

No comments:

Post a Comment