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!

Unix / Linux - Regular Expressions

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