Saat kami menjalankan perintah tertentu di Unix/Linux untuk membaca atau mengedit teks dari string atau file, kami sering kali mencoba memfilter output ke bagian tertentu yang diinginkan. Di sinilah penggunaan ekspresi reguler berguna.
Baca Juga: 10 Operator Rantai Linux Berguna dengan Contoh Praktis
Apa itu Ekspresi Reguler?
Ekspresi reguler dapat didefinisikan sebagai string yang mewakili beberapa urutan karakter. Salah satu hal terpenting tentang ekspresi reguler adalah memungkinkan Anda untuk memfilter output dari perintah atau file, mengedit bagian teks atau file konfigurasi, dan seterusnya.
Fitur Ekspresi Reguler
Ekspresi reguler terbuat dari:
- Karakter biasa seperti spasi, garis bawah(_), A-Z, a-z, 0-9.
- Karakter meta yang diperluas ke karakter biasa, mereka meliputi:
(.)
itu cocok dengan satu karakter apa pun kecuali baris baru.(*)
itu cocok dengan nol atau lebih keberadaan karakter langsung sebelumnya.[ character(s) ]
itu cocok dengan salah satu karakter yang ditentukan dalam karakter, seseorang juga dapat menggunakan tanda hubung(-)
berarti rentang karakter seperti[a-f]
,[1-5]
, dan seterusnya.^
cocok dengan awal baris dalam file.$
cocok dengan akhir baris dalam file.\
itu adalah karakter pelarian.
Untuk memfilter teks, seseorang harus menggunakan alat pemfilteran teks seperti awk . Anda dapat memikirkan awk sebagai bahasa pemrograman tersendiri. Namun untuk cakupan panduan ini menggunakan awk , kita akan membahasnya sebagai alat pemfilteran baris perintah sederhana.
Sintaks umum awk adalah:
# awk 'script' filename
Dimana 'script'
adalah sekumpulan perintah yang dipahami oleh awk dan dieksekusi pada file, nama file.
Ia bekerja dengan membaca baris yang diberikan dalam file, membuat salinan dari baris tersebut dan kemudian mengeksekusi skrip pada baris tersebut. Ini diulangi pada semua baris dalam file.
'script'
dalam bentuk '/pattern/ action'
di mana pola adalah ekspresi reguler dan aksi adalah apa yang akan dilakukan awk ketika menemukan pola yang diberikan dalam sebuah baris.
Cara Menggunakan Alat Penyaring Awk di Linux
Dalam contoh berikut, kita akan fokus pada karakter meta yang kita bahas di atas di bawah fitur awk.
Contoh sederhana penggunaan awk:
Contoh di bawah ini mencetak semua baris dalam file /etc/hosts karena tidak ada pola yang diberikan.
# awk '//{print}'/etc/hosts
Gunakan Awk dengan Pola:
Saya contoh di bawah ini, sebuah pola localhost
telah diberikan, jadi awk akan cocok dengan baris yang memiliki localhost di /etc/hosts
berkas.
# awk '/localhost/{print}' /etc/hosts
Menggunakan Awk dengan wild card (.) dalam sebuah Pola
(.)
akan cocok dengan string yang berisi loc , localhost , jaringan lokal dalam contoh di bawah ini.
Artinya * l some_single_character c * .
# awk '/l.c/{print}' /etc/hosts
Menggunakan Awk dengan (*) Karakter dalam Pola
Ini akan cocok dengan string yang berisi localhost , jaringan lokal , garis , mampu , seperti pada contoh di bawah ini:
# awk '/l*c/{print}' /etc/localhost
Anda juga akan menyadari bahwa (*)
mencoba memberi Anda kecocokan terpanjang yang dapat dideteksi.
Mari kita lihat kasus yang menunjukkan ini, ambil ekspresi reguler t*t
yang berarti mencocokkan string yang dimulai dengan huruf t
dan diakhiri dengan t
pada baris di bawah ini:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint.
Anda akan mendapatkan kemungkinan berikut ketika Anda menggunakan pola /t*t/
:
this is t this is tecmint this is tecmint, where you get t this is tecmint, where you get the best good t this is tecmint, where you get the best good tutorials, how t this is tecmint, where you get the best good tutorials, how tos, guides, t this is tecmint, where you get the best good tutorials, how tos, guides, tecmint
Dan (*)
di /t*t/
karakter wild card memungkinkan awk untuk memilih opsi terakhir:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint
Menggunakan Awk dengan set [ karakter ]
Ambil contoh set [al1]
, di sini awk akan mencocokkan semua string yang berisi karakter a
atau l
atau 1
dalam satu baris dalam file /etc/hosts .
# awk '/[al1]/{print}' /etc/hosts
Contoh berikutnya cocok dengan string yang dimulai dengan K
atau k
diikuti oleh T
:
# awk '/[Kk]T/{print}' /etc/hosts
Menentukan Karakter dalam Rentang
Memahami karakter dengan awk:
[0-9]
berarti satu angka[a-z]
artinya cocok dengan satu huruf kecil[A-Z]
artinya cocok dengan satu huruf besar[a-zA-Z]
artinya cocok dengan satu huruf[a-zA-Z 0-9]
artinya cocok dengan satu huruf atau angka
Mari kita lihat contoh di bawah ini:
# awk '/[0-9]/{print}' /etc/hosts
Semua baris dari file /etc/hosts berisi setidaknya satu angka [0-9]
dalam contoh di atas.
Gunakan Awk dengan (^) Meta Karakter
Ini cocok dengan semua baris yang dimulai dengan pola yang disediakan seperti pada contoh di bawah ini:
# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts
Gunakan Awk dengan ($) Meta Karakter
Ini cocok dengan semua baris yang diakhiri dengan pola yang disediakan:
# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts
Gunakan Awk dengan (\) Escape Character
Ini memungkinkan Anda untuk mengambil karakter yang mengikutinya sebagai literal yang berarti menganggapnya apa adanya.
Pada contoh di bawah, perintah pertama mencetak semua baris dalam file, perintah kedua tidak mencetak apa pun karena saya ingin mencocokkan baris yang memiliki $25.00 , tetapi tidak ada karakter escape yang digunakan.
Perintah ketiga benar karena karakter escape telah digunakan untuk membaca $ apa adanya.
# awk '//{print}' deals.txt # awk '/$25.00/{print}' deals.txt # awk '/\$25.00/{print}' deals.txt
Ringkasan
Itu tidak semua dengan awk alat pemfilteran baris perintah, contoh di atas adalah operasi dasar awk. Di bagian selanjutnya kita akan membahas cara menggunakan fitur kompleks awk. Terima kasih telah membaca dan untuk tambahan atau klarifikasi apa pun, kirimkan komentar di bagian komentar.