|

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.

  • Ordinary characters seperti (_), A-Z, a-z, 0-9.
  • Meta characters adalah perluasan dari ordinary characters, meliputi:
    • (.) kecocokan dengan karakter tunggal apa pun kecuali baris baru.
    • (*) kecocokan karakter apa saja.
    • [ character(s) ] kecocokan dengan salah satu karakter pada character(s), pengunaan strip (-) bermaksud untuk range karakter seperti cobtoh : [a-f], [1-5].
    • ^ Kecocokan karakter diawal baris.
    • $ Kecocokan karakter diakhir baris.
    • \ Meloloskan meta karakter atau special karakter sebagai string atau teks.
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
awk regex

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

awk regex

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

Similar Posts

4.7 3 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments