Unix / Linux - Regular Expressions with SED
Hai there, para pemandu perintah masa depan! Hari ini, kita akan melihat dunia yang magical regular expressions (regex) dan perintah SED yang kuat di Unix/Linux. Siapkan diri anda, kerana kita akan mengembara dalam pengalaman yang menarik yang akan merubah cara anda memanipulasikan teks!
Melancarkan sed
Mari kita mulakan dengan asas. SED, singkatan "Stream Editor," adalah alat pemprosesan teks yang kuat. Untuk menggunainya, kami hanya perlu menulis "sed" diikuti perintah kita. Ia seperti memanggil jin pemmanipulasi teks!
sed 'command' filename
Contohnya:
sed 's/hello/bonjour/' greetings.txt
Perintah ini menggantikan "hello" dengan "bonjour" dalam fail greetings.txt. Mudah, kan?
Sintaks Umum sed
Sintaks umum untuk sed seperti mantra magical:
sed OPTIONS... [SCRIPT] [INPUTFILE...]
Jangan bimbang jika ini kelihatan menakutkan. Kita akan membahagikan ia secara beransur, seperti menyusun teka-teki yang menyenangkan!
Menghapus Semua Baris dengan sed
Ingin membuat semua teks dalam fail hilang? Sed bolehbuat itu! Berikut cara nya:
sed 'd' filename
Ini menghapus semua baris dalam fail. Ia seperti menggunakan penghapus di buku digital anda!
Alamat sed
Alamat dalam sed adalah seperti koordinat GPS untuk teks anda. Ia memberitahu sed di mana untuk menjalankan sihirnya. Berikut beberapa contoh:
sed '2d' file.txt # Menghapus baris ke-2
sed '/pattern/d' file.txt # Menghapus baris yang mengandungi 'pattern'
RentangAlamat sed
Kadang-kadang, kita mahu menjalankan sihir pada rentang baris. Berikut cara nya:
sed '2,5d' file.txt # Menghapus baris 2 hingga 5
sed '2,$d' file.txt # Menghapus dari baris 2 hingga akhir fail
Perintah Penggantian
Perintah penggantian adalah like roti dan mentega untuk sed. Ia seperti "cari dan ganti" yang diperkasa!
sed 's/old/new/' file.txt
Ini menggantikan kesemua kemunculan pertama "old" dengan "new" pada setiap baris.
Bendera Penggantian
Bendera adalah seperti power-ups untuk perintah penggantian anda. Berikut adalah jadual bendera biasa:
Bendera | Keterangan |
---|---|
g | Ganti semua kemunculan, bukan hanya pertama |
i | Abaikan perbezaan huruf |
p | Cetak baris yang diubah |
w | Tulis hasil ke fail |
Contoh:
sed 's/cat/dog/g' pets.txt
Ini menggantikan semua kemunculan "cat" dengan "dog".
Menggunakan Penyekat String Alternatif
Kadang-kadang, teks anda mengandungi banyak garisan miring. Tak perlu bimbang! Kita boleh menggunakan penyekat yang berbeza:
sed 's#/usr/local/bin#/common/bin#' paths.txt
Di sini, kita menggunakan '#' sebagai penyekat kita, bukan '/'.
Menggantikan dengan Ruang Kosong
Ingin membuat teks menghilang tanpa jejak? Berikut cara nya:
sed 's/unwanted//g' file.txt
Ini menghapus semua kemunculan "unwanted" dari fail.
Penggantian Alamat
Kita boleh gabungkan alamat dengan penggantian untuk pembedahan teks yang tepat:
sed '3,6s/foo/bar/g' file.txt
Ini menggantikan semua "foo" dengan "bar," tetapi hanya pada baris 3 hingga 6.
Perintah Pemadanan
Perintah pemadanan adalah seperti cahaya sorot, memancarkan baris yang kita minati:
sed -n '/pattern/p' file.txt
Ini hanya mencetak baris yang mengandungi "pattern".
Menggunakan Regular Expression
Sekarang kita mencapai magik sebenar! Regular expressions adalah seperti wildcards yang diperkasa. Berikut contoh yang mudah:
sed -n '/^The/p' story.txt
Ini mencetak semua baris yang bermula dengan "The".
Pemadanan Karakter
Regular expressions mempunyai karakter khas yang berperanan seperti shapeshifters:
Karakter | Makna |
---|---|
. | Mana-mana karakter tunggal |
* | Nol atau lebih karakter sebelumnya |
^ | Awal baris |
$ | Akhir baris |
Contoh:
sed -n '/c.t/p' animals.txt
Ini memadankan "cat", "cot", "cut," dll.
Keyword Kelas Karakter
Kelas karakter adalah seperti pasukan karakter. Berikut pemain MVP:
Kelas | Padankan |
---|---|
[:alpha:] | Karakter abjad |
[:digit:] | Karakter nombor |
[:alnum:] | Karakter alfanumerik |
Contoh:
sed -n '/[[:digit:]]/p' data.txt
Ini mencetak baris yang mengandungi mana-mana nombor.
Rujukan Ampersand
Ampersand (&) adalah seperti cermin magical, merefleksikan apa yang dipadankan:
sed 's/[0-9]/(&)/' numbers.txt
Ini menempatkan tanda kurung sekeliling setiap nombor.
Menggunakan Banyak Perintah sed
Ingin menjalankan banyak sihir sekali? Gunakan pilihan -e:
sed -e 's/foo/bar/g' -e 's/baz/qux/g' file.txt
Ini melakukan dua penggantian dalam satu langkah!
Rujukan Belakang
Rujukan belakang adalah seperti mesin waktu, membolehkan kita mengguna semula sebahagian daripada padanan:
sed 's/\(.*\):\([^:]*\)/\2:\1/' names.txt
Ini menukar teks sebelum dan selepas titik dua.
Dan di situ ada, murid-murid sayangku! Kita telah mengembara melalui negeri sed dan regular expressions. Ingat, latihan membuat sempurna. Jadi, maju dan manipulasikan teks seperti ahli sihir perintah yang anda jadikan! Selamat berkoding!
Credits: Image by storyset