Dibuat untuk versi 7 sistem operasi Unix asli AT&T, sed
perintah telah disertakan dengan mungkin setiap Unix dan OS Linux sejak itu. sed
aplikasi adalah editor streaming , dan tidak seperti editor teks, ia tidak membuka buffer visual tempat data file dimuat untuk diproses. Sebaliknya, ia beroperasi pada file, baris demi baris, sesuai dengan perintah yang diketikkan ke terminal atau serangkaian perintah dalam skrip.
Memasang
Lebih banyak sumber daya Linux
- Lembar contekan perintah Linux
- Lembar contekan perintah Linux tingkat lanjut
- Kursus online gratis:Ikhtisar Teknis RHEL
- Lembar contekan jaringan Linux
- Lembar contekan SELinux
- Lembar contekan perintah umum Linux
- Apa itu container Linux?
- Artikel Linux terbaru kami
Jika Anda menggunakan Linux, BSD, atau macOS, maka Anda sudah memiliki sed
GNU atau BSD diinstal. Ini adalah dua implementasi ulang unik dari sed
original asli perintah, dan meskipun serupa, mungkin ada perbedaan kecil. GNU sed
umumnya dianggap sebagai sed
yang paling kaya fitur di luar sana, dan tersedia secara luas di salah satu platform ini.
Jika Anda tidak dapat menemukan GNU sed
(sering disebut gsed
pada sistem non-Linux), Anda dapat mengunduh kode sumbernya dari situs web GNU. Hal yang menyenangkan tentang memiliki GNU sed
diinstal adalah dapat digunakan untuk fungsi tambahannya, tetapi juga dapat dibatasi agar sesuai dengan spesifikasi POSIX dari sed
, jika Anda memerlukan portabilitas.
Di Windows, Anda dapat menginstal GNU sed
dengan Cokelat.
Cara kerja Sed
sed
aplikasi bekerja pada satu baris pada satu waktu. Karena tidak memiliki tampilan visual, ini menciptakan ruang pola—ruang dalam memori yang berisi baris saat ini dari aliran input (dengan karakter baris baru yang tertinggal dihapus). Setelah ruang pola terisi, instruksi Anda untuk sed
dieksekusi. Terkadang perintah Anda bersyarat, dan terkadang mutlak, jadi hasil dari perintah ini bergantung pada cara Anda menggunakan sed
.
Ketika akhir perintah tercapai, sed
mencetak isi ruang pola ke aliran keluaran. Aliran keluaran default adalah stdout , tetapi dapat dialihkan ke file atau bahkan kembali ke file yang sama menggunakan --in-place=.bak
pilihan.
Kemudian siklus dimulai lagi dengan baris input berikutnya.
Sintaks untuk sed
perintahnya adalah:
$ sed --options [optional SCRIPT] [INPUT FILE or STREAM]
Menemukan apa yang ingin Anda edit
Dalam editor visual, Anda biasanya menemukan apa yang ingin Anda ubah dalam file teks tanpa terlalu memikirkannya. Mata Anda (atau pembaca layar) memindai teks, menemukan kata yang ingin Anda ubah atau tempat yang ingin Anda sisipkan atau hapus teks, lalu Anda mulai mengetik. Tidak ada mode interaktif untuk sed
, jadi Anda harus memberi tahu kondisi apa yang harus dipenuhi agar dapat menjalankan perintah tertentu.
Untuk contoh ini, asumsikan bahwa file bernama example.txt
berisi teks ini:
halo
dunia
Ini baris ketiga.
Ini baris terakhir.
Nomor baris
Menentukan nomor baris memberitahu sed
untuk beroperasi hanya pada baris tertentu dalam file.
Misalnya, perintah ini memilih baris 1 file dan mencetaknya. Karena sed
tindakan default setelah pemrosesan juga untuk mencetak baris ke stdout , ini memiliki efek menduplikasi baris pertama:
$ sed ‘1p’ example.txt
hello
hello
world
Ini baris ketiga.
Ini baris terakhir.
Anda juga dapat menentukan nomor baris dalam langkah-langkah. Misalnya, 1~2
menunjukkan bahwa setiap 2 baris dipilih ("pilih setiap baris kedua dimulai dengan yang pertama"). Instruksi 1~3
artinya memilih setiap baris ketiga setelah baris pertama:
$ sed '1p' example.txt
hello
hello
world
Ini baris ketiga.
Ini baris terakhir.
Ini adalah baris terakhir.
Posisi garis
Anda hanya dapat beroperasi pada baris terakhir file dengan menggunakan $
sebagai pemilih:
$ sed '$p' example.txt
hello
world
Ini baris ketiga.
Ini baris terakhir.
Ini baris terakhir .
Di GNU sed
, Anda dapat memilih lebih dari satu baris (sed '1,$p'
mencetak baris pertama dan terakhir, misalnya).
Negasi
Pilihan apa pun berdasarkan nomor atau posisi, Anda dapat membalikkan dengan tanda seru (!
) karakter. Ini akan memilih semua baris kecuali baris pertama:
$ sed '1!p' example.txt
halo
world
world
Ini baris ketiga.
Ini baris ketiga.
Ini baris terakhir.
Ini baris terakhir.
Pencocokan pola
Anda dapat menganggap kecocokan pola sebagai penemuan operasi di pengolah kata atau browser. Anda memberikan sebuah kata (pola ), dan hasilnya dipilih. Sintaks untuk pencocokan pola adalah /pattern/
.
$ sed '/hello/p' example.txt
hello
hello
world
Ini baris ketiga.
Ini baris terakhir.
$ sed '/line/p' example.txt
hello
world
Ini baris ketiga.
Ini baris ketiga.
Ini baris terakhir .
Inilah baris terakhirnya.
Mengedit dengan Sed
Setelah Anda menemukan apa yang ingin Anda edit, Anda dapat melakukan tindakan apa pun yang Anda inginkan. Anda melakukan pengeditan dengan sed
dengan perintah. Perintah dalam sed
berbeda dari sed
perintah itu sendiri. Jika itu membantu, anggap itu sebagai "tindakan" atau "kata kerja" atau "petunjuk".
Perintah dalam sed
adalah huruf tunggal, seperti p
untuk cetak perintah yang digunakan pada contoh sebelumnya. Mereka mungkin sulit untuk diingat pada awalnya, tetapi seperti semua hal, Anda dapat mengenalnya dengan latihan.
p untuk dicetak
p
instruksi mencetak apa pun yang saat ini disimpan di ruang pola.
d untuk dihapus
d
instruksi menghapus ruang pola.
$ sed '$d' example.txt
hello
world
Ini baris ketiga.
$ sed '1d' example.txt
world
Ini baris ketiga.
Ini baris terakhir.
s untuk mencari dan mengganti
s
perintah mencari pola dan menggantinya dengan yang lain. Ini mungkin penggunaan yang paling populer dan kasual untuk sed
, dan seringkali yang pertama (dan terkadang satu-satunya) sed
perintah yang dipelajari pengguna. Ini hampir pasti merupakan perintah yang paling berguna untuk mengedit teks.
$ sed ‘s/world/opensource.com/’
halo
opensource.com
Ini baris ketiga.
Ini baris terakhir.
Ada juga fungsi khusus yang dapat Anda gunakan dalam teks pengganti. Misalnya, \L
mengubah teks pengganti menjadi huruf kecil dan \l
melakukan hal yang sama hanya untuk karakter berikutnya. Ada yang lain, yang tercantum dalam sed
dokumentasi (Anda dapat melihatnya dengan info sed
perintah).
Karakter khusus &
dalam klausa pengganti mengacu pada pola yang cocok:
$ sed ‘s/is/\U&/’ example.txt
halo
dunia
Ini adalah baris ketiga.
Ini adalah baris terakhir.
Anda juga dapat meneruskan tanda khusus untuk memengaruhi cara s
memproses apa yang ditemukannya. g
(untuk global , mungkin) flag memberi tahu s
untuk menerapkan penggantian ke semua pertandingan yang ditemukan di telepon dan bukan hanya pertandingan pertama:
$ sed 's/is/\U&/g' example.txt
hello
world
Ini ADALAH baris ketiga.
Ini ADALAH baris terakhir.
Tanda penting lainnya termasuk nomor untuk menunjukkan kemunculan pola yang cocok mana yang akan terpengaruh:
$ sed 's/is/\U&/2' example.txt
hello
world
Ini IS baris tiga.
Ini baris terakhir.
The w
flag, diikuti dengan nama file, menulis baris yang cocok ke file hanya jika terjadi perubahan:
$ sed 's/is/\U&/w sed.log' example.txt
hello
world
Ini adalah baris ketiga.
Ini adalah baris terakhir.
$ cat sed.log
Ini adalah baris ketiga.
Inilah baris terakhir.
Bendera dapat digabungkan:
$ sed 's/is/\U&/2w sed.log' example.txt
hello
world
Ini IS baris tiga.
Ini baris terakhir.
$ cat sed.log
Ini adalah baris ketiga.
Skrip
Ada banyak situs hebat di luar sana dengan sed
"satu baris." Mereka memberi Anda sed
yang berorientasi pada tugas perintah untuk memecahkan masalah umum. Namun, mempelajari sed
untuk diri sendiri memungkinkan Anda untuk menulis satu kalimat Anda sendiri, dan itu dapat disesuaikan dengan kebutuhan spesifik Anda.
Skrip untuk sed
dapat ditulis sebagai baris di terminal, atau dapat disimpan ke file dan dieksekusi dengan sed
diri. Saya cenderung menulis skrip kecil semua sebagai satu perintah karena saya jarang menggunakan kembali sed
perintah dalam kehidupan nyata. Ketika saya menulis sed
skrip, biasanya sangat spesifik untuk satu file. Misalnya, setelah menulis draf awal artikel ini, saya menggunakan sed
untuk membakukan huruf besar "sed", dan itu adalah tugas yang mungkin tidak akan pernah saya lakukan lagi.
Anda dapat mengeluarkan serangkaian perintah berbeda untuk sed
dipisahkan dengan titik koma (;
).
$ sed ‘3t; s/line/\U&/’ example.txt
halo
dunia
Ini adalah LINE tiga.
Ini adalah baris terakhir.
Perubahan cakupan dengan kurung kurawal
Anda juga bisa membatasi hasil mana yang terpengaruh dengan kurung kurawal ({}
). Saat Anda menyertakan sed
perintah dalam kurung, mereka hanya berlaku untuk pilihan tertentu. Misalnya, kata "garis" muncul dalam dua baris teks sampel. Anda dapat memaksa sed
hanya mempengaruhi baris terakhir dengan mendeklarasikan kondisi kecocokan yang diperlukan ($
untuk menunjukkan baris terakhir) dan menempatkan s
perintah yang ingin Anda lakukan dalam kurung kurawal segera setelahnya:
$ sed '$ {s/line/\U&/}' example.txt
hello
world
Ini adalah baris ketiga.
Ini adalah LINE terakhir.Pelajari Sed
Anda dapat melakukan lebih banyak hal dengan
sed
dari apa yang dijelaskan dalam artikel ini. Saya bahkan belum sampai ke percabangan (b
), tes (t
), penangguhan spasi (H
), dan banyak fitur lainnya. Sukaied
,sed
mungkin bukan editor teks yang akan Anda gunakan untuk pembuatan dokumen atau bahkan untuk setiap tugas skrip yang perlu Anda lakukan, tetapi ini adalah opsi ampuh yang Anda miliki sebagai pengguna POSIX. Mempelajari carased
perintah terstruktur dan cara menulis skrip pendek dapat membuat perubahan cepat pada teks dalam jumlah besar. Bacainfo
halaman GNUsed
, atau halaman manual BSDsed
, dan cari tahu apa yangsed
dapat melakukannya untuk Anda.
Cara menggunakan heredoc sebagai editor teks 10 kisah sukses Linux yang harus dibaca dari tahun 2020Linux