GNU/Linux >> Belajar Linux >  >> Linux

Cara Menggunakan Awk dan Ekspresi Reguler untuk Memfilter Teks atau String dalam File

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:

  1. Karakter biasa seperti spasi, garis bawah(_), A-Z, a-z, 0-9.
  2. Karakter meta yang diperluas ke karakter biasa, mereka meliputi:
    1. (.) itu cocok dengan satu karakter apa pun kecuali baris baru.
    2. (*) itu cocok dengan nol atau lebih keberadaan karakter langsung sebelumnya.
    3. [ 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.
    4. ^ cocok dengan awal baris dalam file.
    5. $ cocok dengan akhir baris dalam file.
    6. \ 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:

  1. [0-9] berarti satu angka
  2. [a-z] artinya cocok dengan satu huruf kecil
  3. [A-Z] artinya cocok dengan satu huruf besar
  4. [a-zA-Z] artinya cocok dengan satu huruf
  5. [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.


Linux
  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. Bagaimana Ekspresi Reguler Berbeda Dari Wildcard yang Digunakan Untuk Memfilter File?

  3. Cara Menggunakan Netcat untuk Mentransfer File di Linux

  1. Cara mengekstrak file .gz dan .tar.gz di Linux

  2. Cara menggunakan Logrotate untuk mengelola file log

  3. Cara menggunakan Perintah tshark Wireshark untuk Port Kustom dan File Teks

  1. Cara Menginstal dan Menggunakan Perintah Nano Text Editor di Linux

  2. Cara Menggunakan sed untuk Menemukan dan Mengganti String di File

  3. Bagaimana cara menggabungkan dua file menggunakan AWK?