Perintah AWK dan Regular Expresion untuk Filter Teks dan String File.
Saat menjalankan perintah tertentu di Unix/Linux terutama awk untuk membaca atau mengedit teks dari string atau file, Sering kali mencoba memfilter input teks dan string ke bagian tertentu yang diminati. Untuk mendapatkan hasil OutPut yang diinginkan bisa memanfaatkan Regular Expresion.
Apa itu Regular Expresion (REGEX)
Regular Expresion dapat didefinisikan sebagai string yang mewakili beberapa urutan karakter. Salah satu hal terpenting tentang Regular Expresion adalah memungkinkan untuk memfilter output dari perintah atau file, mengedit bagian teks atau file konfigurasi, dsb.
Awk Syntax
Berikut ini bentuk umum syntax awk :
awk '/pattern/ {action}' filename
Sebelum memulai siapkan file bisa dengan editor apapun seperti vi, vim, nano, dll. File berikut bernama buah.txt dengan isian berikut ini ;
Apel red 4
Pisang yellow 6
Stroberi red 3
Rasberi red 99
Anggur purple 10
Apel green 8
Naga purple 2
Sawo brown 4
Kentang brown 9
Nanas yellow 5
Menyaring OutPut dengan awalan A
Untuk menerapkan hasil OutPut dengan awalan karakter tertentu (Contok Huruf A), bisa menggunkan regex ^A
# awk '/^A/ {print}' buah.txt
Bisa dilihat dari Output yang dihasilnya akan memfilter sesuai pattern regex, semua bari yang memiliki awalan A akan di tampilkan.
Menyaring OutPut dengan karakter akhir 4
Dengan bantuan “$” bisa melakukan fillter dengan pattern kecocokan akhiran baris, dalam contoh ini adalah akiran angka 4 dengan regex “4$“
# awk '/4$/ {print}' buah.txt
Hasil OutPutnya adalah semua bari yang memiliki akhiran 4.
Menampilkan OutPut memiliki Kecocokan Huruf dengan pattern [ character(s) ]
Dengan buka dan tutup kurung siku [ ], bisa menentukan karakter apa yang akan menjadi pattern karakter.
Contoh [PS] Setiap baris yang memiliki karakter P atau S akan di tampilkan.
# awk '/[PS]/ {print}' buah.txt
Jika ingin menggunakan pattern dengan range tertentu bisa gunakan tanda hyphen/strip ( – ). Sebagai contoh menggunakan ingin memfilter dua karakter dengan range angka 0-9. Maka gunakan patern [0-9][0-9.
# awk '/[0-9][0-9]/ {print}' buah.txt
Bisa dilihat hasilnya hanya akan mencetak baris yang memiliki 2 karakter angka denga nrange 0-9.
Menggunakan Escape karakter ( \ ) dan WildCard ( . )
Penggunaan Escaoe karakter ini untuk meloloskan special karakter sehinggal bisa dianggap bagian dari string patter yang digunakan untuk filter. Contoh ingin memloloskan tanda $ sebagai patern dari untuk memfilter baris memili 4 karakter dimana :
- karakter pertama adalah $
- kedua angka [0-9]
- ketiga angka [0-9]
- keempat adalah wildcard (.) artinya karakter bebas.
Contoh hasil dari karakter tersebut adalah $100 / $110
# awk '/\$[0-9][0-9]./ {print}' buah.txt
Sebelumnya tambahkan dahulu isi file buah.txt dengan tambahan harga $
Apel red 4 $20
Pisang yellow 6 $10
Stroberi red 3 $30
Rasberi red 99 $100
Anggur purple 10 $50
Apel green 8 $40
Naga purple 2 $20
Sawo brown 4 $50
Kentang brown 9 $30
Nanas yellow 5 $110
Ketika dieksekusi file terhadap file buah.txt hasilnya
Hasil perintah diatas tanda \$ untuk meloloskan $ dianggap sebagai string pattern, [0-9][0-9]. ada tanda wildcard titik ( . ) di akhir artinya 3 karakter setelah karakter $, dimana 2 karakter pertama adalah range angka 0-9 dan titik ( . ) sebagai wildcard karakter yang mengikutinya bebas apa saja.
Menggunakan Regex awk sebagai paterrn dari kondis percabangan if
Regex juga bisa diterapkan di awk besetra percabangan if, misal dalam Contoh ingin menampilan Buah dengan harga antara $30 – $59. Jika menggunakan if akan lebih cepat.
# awk '{ if ($3 = /\$[3-5][0-9]/) print "Buah",$1,"\t Harga",$4;}' buah.txt
Pengunaan regex didalam if bisa dilihat dai kondisi ($3 = /\$[3-5][0-9]/) Dimana :
- $3 adalah Kolom ke tiga yang berisi harga.
- \$ meloloskan special karaktaer agar dianggap string dari pattern.
- [3-5][0-9] 2 karakter yang range anggka 3-5 dan 0-9 atau bisa dibilang 30-59.
Kesimpulan
Regular Expresion atau Regex adalah tools yang ampuh untuk pemrosesan teks di awk. Memungkinkan pencarian pola dalam file teks, dan memanipulasi data berdasarkan pola tersebut. Dengan menguasai ekspresi regular di awk, Anda dapat menjadi lebih efektif dan efisien dalam tugas pemrosesan teks, dan menyelesaikan manipulasi data yang rumit dengan mudah. Selamat Mencoba