Pengantar Editor sed
Istilah sed singkatan dari editor aliran . Sed dapat mengambil inputnya dari standar masuk, menerapkan pengeditan yang diminta pada aliran, dan secara otomatis memasukkan hasilnya ke standar keluar. Sintaks sed memungkinkan file input ditentukan pada baris perintah.
Anda tidak perlu berinteraksi dengan editor sed saat sedang berjalan; oleh karena itu, ini juga disebut editor batch. Ini berbeda dengan editor seperti vi dan ed, yang bersifat interaktif. Karena sed tidak memerlukan interaksi, Anda dapat menempatkan perintah sed dalam skrip. Anda dapat memanggil file skrip dan menjalankannya terhadap file data untuk melakukan operasi pengeditan berulang.
Format Perintah
Berikut ini menunjukkan sintaks untuk perintah sed:
# sed [options] 'action [args]' files [ > outfile]
Editor sed mampu melakukan penggantian pola teks dan penghapusan pola teks menggunakan sintaks ekspresi reguler. Ini adalah karakter ekspresi reguler yang sama yang digunakan oleh grep.
Perintah sed menawarkan kemampuan yang merupakan perpanjangan dari pengeditan teks interaktif. Jika Anda perlu mencari dan mengganti string teks dalam sejumlah besar file, sed adalah yang paling berguna.
Mengedit Perintah
Editor sed menggunakan perintah pengeditan (ditunjukkan pada Tabel) yang serupa dengan yang akan Anda gunakan untuk vi dan ed.
Perintah | Fungsi |
---|---|
d | Menghapus baris |
p | Mencetak baris |
r | Membaca file |
s | Mengganti satu string untuk yang lain |
w | Menulis ke file |
Perintah sed memiliki dua opsi:
Opsi | Fungsi |
---|---|
-n | Menekan keluaran default |
-f | Membaca perintah sed dari file skrip |
Contoh data yang digunakan dalam contoh
Contoh berikut menjalankan perintah sed terhadap file bernama "data.txt". Isi dari file data.txt adalah sebagai berikut.
# cat data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster 33 southern SO May Chin 45 southeast SE Derek Johnson 3 eastern EA Susan Beal 34 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Menggunakan sed untuk Mencetak Teks
Contoh 1 :Mencetak rentang garis
Contoh berikut menunjukkan penggunaan perintah p (print), yang mencetak rentang baris ke stdout. Rentang ditentukan oleh alamat awal diikuti dengan koma dan kemudian alamat akhir. Output default sed adalah setiap baris yang dibacanya. Untuk menekan output default, gunakan opsi -n.
# sed -n '3,5p' data.txt southwest SW Chris Foster 33 southern SO May Chin 45 southeast SE Derek Johnson 3
Contoh 2 :Mencetak garis yang berisi pola tertentu
Perintah berikut mencetak semua baris dengan pola barat di dalamnya. Gunakan garis miring (/) untuk membatasi ekspresi reguler.
# sed -n '/west/p' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster 33
Contoh 3 :Mencetak garis dengan banyak pola
Perintah berikut mencetak baris pertama yang berisi pola barat, hingga dan termasuk baris berikutnya yang berisi pola selatan.
# sed -n '/west/,/southern/p' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster 33 southern SO May Chin 45
Contoh 4 :Mencetak garis dengan pola dan semua garis setelah itu
Perintah berikut mencetak baris pertama yang berisi pola Chris, hingga baris terakhir file.
# sed -n '/Chris/,$p' data.txt southwest SW Chris Foster 33 southern SO May Chin 45 southeast SE Derek Johnson 3 eastern EA Susan Beal 34 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Contoh 5:Fungsionalitas mirip dengan grep
Polanya mungkin berisi karakter ekspresi reguler yang digunakan oleh grep. Contoh berikut mencetak semua baris yang dimulai dengan s dan diakhiri dengan 5.
# sed -n '/^s.*5$/p' data.txt southern SO May Chin 45
Menggunakan sed untuk Mengganti Teks
Perintah | Contoh | Mengedit Tindakan |
---|---|---|
s | sed s/x/y/option | Cari dan ganti. Pola pencarian x diganti dengan pola y. Pencarian dan pola penggantian adalah ekspresi reguler dalam banyak kasus, dan perilaku pencarian dan penggantian dapat dipengaruhi melalui berbagai opsi. |
y | sed y/abc/xyz/ | Ganti setiap karakter dari himpunan karakter sumber dengan karakter yang memiliki posisi yang sama pada himpunan karakter tujuan. |
Contoh 1 :Cari dan ganti pola tertentu
s perintah memungkinkan operasi pencarian dan substitusi terjadi pada teks. Perintah menggunakan pencarian pola dan penggantian string literal. Karakter string pengganti diambil secara harfiah tanpa ekspansi metakarakter.
# sed 's/3/X/' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster X3 southern SO May Chin 45 southeast SE Derek Johnson X eastern EA Susan Beal X4 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Perintah sed memeriksa setiap baris file dan mengganti kemunculan pertama dari string lama dengan string baru. Kemunculan berikutnya dari string lama dalam baris yang sama dibiarkan tidak berubah.
Contoh 2 :Mencari dan mengganti pola tertentu secara global
Contoh berikut menunjukkan g (global) perintah dengan s (cari dan ganti) perintah, dan itu menggantikan semua kemunculan string lama dengan string baru.
# sed 's/3/X/g' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster XX southern SO May Chin 45 southeast SE Derek Johnson X eastern EA Susan Beal X4 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Contoh 3 :Cari dan substitusikan dengan pola pencarian yang termasuk dalam substitusi
Terkadang dengan pencarian dan penggantian, string lama akan menjadi bagian dari string pengganti baru, yang dapat Anda selesaikan dengan menempatkan &(ampersand) di string pengganti. Lokasi &menentukan lokasi string lama dalam string pengganti.
Tujuan dari contoh berikut adalah untuk menulis perintah yang mencari semua baris yang diakhiri dengan satu digit di bidang terakhir dan mengganti satu digit dengan angka satu digit ditambah string Single Digit.
Untuk mengidentifikasi baris dengan angka satu digit dengan benar di bidang terakhir, pertimbangkan perintah sed berikut. Tab memisahkan bidang dengan setiap baris.
sed -n '/ [0-9]$/p' data.txt southeast SE Derek Johnson 3
Perintah berikut mencari semua baris yang diakhiri dengan satu digit di bidang terakhir dan mengganti satu digit dengan nomor satu digit ditambah string Single Digit.
# sed 's/ [0-9]$/& Single Digit/' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster 33 southern SO May Chin 45 southeast SE Derek Johnson 3 Single Digit eastern EA Susan Beal 34 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Menggunakan sed untuk Menghapus Teks
Contoh 1 :Hapus rentang garis
Perintah berikut menghapus Baris 4 sampai 8 dari output.
# sed '4,8d' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 southwest SW Chris Foster 33 central CT Sheri Watson 44
Contoh 2 :Menghapus baris yang berisi pola tertentu
Perintah berikut menghapus setiap baris yang berisi pola barat.
# sed '/west/d' data.txt southern SO May Chin 45 southeast SE Derek Johnson 3 eastern EA Susan Beal 34 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Contoh 3
Perintah berikut menghapus setiap baris yang dimulai dengan pola barat.
# sed '/^west/d' data.txt northwest NW Joel Craig 10 southwest SW Chris Foster 33 southern SO May Chin 45 southeast SE Derek Johnson 3 eastern EA Susan Beal 34 northeast NE TJ Nichols 67 north NO Val Shultz 91 central CT Sheri Watson 44
Contoh 4
Perintah berikut menghapus rentang baris yang dimulai dengan baris pertama yang berisi pola selatan, hingga baris berikutnya dari file yang berisi utara.
# sed '/south/,/north/d' data.txt northwest NW Joel Craig 10 western WE Sharon Kelly 40 north NO Val Shultz 91 central CT Sheri Watson 44
Fungsi sed Tambahan – Mengedit Perintah
Perintah editor sed tambahan ditampilkan pada tabel berikut.
Perintah | Fungsi |
---|---|
a | Menambahkan teks |
c | Mengubah teks pada baris saat ini dengan teks baru |
i | Menyisipkan teks di atas baris saat ini |
Menempatkan Banyak Pengeditan dalam Satu Perintah sed
Ada kalanya Anda ingin melakukan beberapa pengeditan pada file. Daripada menggunakan beberapa perintah sed, Anda dapat menggunakan opsi -e untuk menempatkan pengeditan di baris perintah yang sama. Pengeditan dilakukan dalam urutan yang Anda tentukan.
Contoh 1
Hapus garis dengan hati-hati. Anda dapat melakukan pengeditan pada baris teks dan kemudian menghapus baris teks tersebut dari output. Ini terjadi pada contoh berikut dengan Baris 1 dari file input.
# sed -e 's/north/North/' -e '1,4d' data.txt southeast SE Derek Johnson 3 eastern EA Susan Beal 34 Northeast NE TJ Nichols 67 North NO Val Shultz 91 central CT Sheri Watson 44