Cara menggunakan ekspresi awk dan reguler untuk memfilter teks atau string dalam file

Cara menggunakan ekspresi awk dan reguler untuk memfilter teks atau string dalam file

Ketika kami menjalankan perintah tertentu di UNIX/Linux untuk membaca atau mengedit teks dari string atau file, kami paling sering mencoba untuk memfilter output ke bagian yang menarik yang diberikan. Di sinilah penggunaan ekspresi reguler sangat berguna.

Baca juga: 10 operator rantai Linux yang 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 bahwa mereka memungkinkan Anda untuk memfilter output perintah atau file, mengedit bagian teks atau file konfigurasi dan sebagainya.

Fitur ekspresi reguler

Ekspresi reguler dibuat dari:

  1. Karakter biasa seperti ruang, underscore (_), a-z, a-z, 0-9.
  2. Karakter meta yang diperluas ke karakter biasa, mereka termasuk:
    1. (.) itu cocok dengan karakter tunggal kecuali garis baru.
    2. (*) itu cocok dengan nol atau lebih keberadaan karakter langsung yang mendahului.
    3. [Karakter]] Ini cocok dengan salah satu karakter yang ditentukan dalam karakter, orang juga dapat menggunakan tanda hubung (-) berarti berbagai karakter seperti [A-F], [1-5], dan seterusnya.
    4. ^ itu 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 bisa memikirkannya AWK sebagai bahasa pemrogramannya sendiri. Tetapi untuk ruang lingkup panduan ini untuk menggunakan AWK, Kami akan menutupinya sebagai alat penyaringan baris perintah sederhana.

Sintaks umum AWK adalah:

# AWK 'Script' FileName 

Di mana 'naskah' adalah satu set perintah yang dipahami oleh AWK dan dieksekusi di file, nama file.

Ini bekerja dengan membaca baris yang diberikan dalam file, membuat salinan baris dan kemudian menjalankan skrip di baris. Ini diulangi pada semua baris dalam file.

Itu 'naskah' ada dalam bentuknya '/ pola/ tindakan' Di mana pola adalah ekspresi reguler dan tindakan adalah apa yang akan dilakukan AWK saat menemukan pola yang diberikan dalam satu baris.

Cara menggunakan alat penyaringan awk di linux

Dalam contoh -contoh berikut, kami akan fokus pada karakter meta yang kami bahas di atas di bawah fitur AWK.

Contoh sederhana menggunakan AWK:

Contoh di bawah ini mencetak semua baris dalam file /etc/host Karena tidak ada pola yang diberikan.

# awk '//print '/etc/hosts 
AWK mencetak semua baris dalam file

Gunakan AWK dengan pola:

I Contoh di bawah ini, sebuah pola localhost telah diberikan, jadi AWK akan cocok dengan garis yang memiliki localhost dalam /etc/host mengajukan.

# awk '/localhost/print ' /etc /hosts 
Cetak awk yang diberikan baris pencocokan dalam file

Menggunakan AWK dengan (.) kartu liar dalam suatu pola

Itu (.) akan mencocokkan string yang berisi loc, localhost, Localnet dalam contoh di bawah ini.

Artinya * l beberapa_single_character c *.

# awk '/l.C/print ' /etc /hosts 
Gunakan AWK untuk mencetak string pencocokan dalam file

Menggunakan AWK dengan (*) karakter dalam suatu pola

Itu akan cocok dengan string yang berisi localhost, Localnet, baris, mampu, Seperti pada contoh di bawah ini:

# awk '/l*c/print ' /etc /localhost 
Gunakan AWK untuk mencocokkan string dalam file

Anda juga akan menyadarinya (*) mencoba membuat Anda paling terpanjang yang mungkin dapat dideteksi.

Biarkan melihat kasus yang menunjukkan ini, ambil ekspresi reguler t*t yang berarti string pertandingan yang dimulai dengan surat T dan akhiri dengan T di baris di bawah ini:

ini adalah tecmint, di mana Anda mendapatkan tutorial terbaik, cara, pemandu, tecmint. 

Anda akan mendapatkan kemungkinan berikut saat menggunakan polanya /t*t/:

Ini adalah tecmint ini adalah tecmint, di mana Anda mendapatkan ini adalah tecmint, di mana Anda mendapatkan yang terbaik t Ini adalah tecmint, di mana Anda mendapatkan tutorial bagus terbaik, bagaimana ini tecmint, di mana Anda mendapatkan tutorial bagus terbaik terbaik , Bagaimana Tos, Panduan, T Ini adalah Tecmint, di mana Anda mendapatkan tutorial terbaik, bagaimana TOS, Panduan, Tecmint 

Dan (*) di dalam /t*t/ Karakter kartu liar memungkinkan AWK untuk memilih opsi terakhir:

ini adalah tecmint, di mana Anda mendapatkan tutorial terbaik, cara, pemandu, tecmint 

Menggunakan AWK dengan Set [karakter)]

Ambil contoh set [Al1], Di sini AWK akan cocok dengan semua string yang mengandung karakter A atau l atau 1 dalam baris di file /etc/host.

# awk '/[al1]/print ' /etc /hosts 
Use-Awk untuk mencetak karakter pencocokan dalam file

Contoh berikutnya cocok dengan string yang dimulai dengan keduanya K atau k diikuti oleh T:

# awk '/[Kk] t/print ' /etc /hosts 
Gunakan AWK untuk mencetak string yang cocok di file

Menentukan karakter dalam rentang

Memahami karakter dengan AWK:

  1. [0-9] berarti satu nomor
  2. [a-z] berarti cocok dengan satu huruf kecil
  3. [A-z] berarti mencocokkan satu surat kasus atas tunggal
  4. [a-za-z] berarti cocok dengan satu huruf
  5. [A-ZA-Z 0-9] berarti mencocokkan satu huruf atau nomor

Mari kita lihat contoh di bawah ini:

# awk '/[0-9]/print ' /etc /hosts 
Gunakan AWK untuk Mencetak Nomor Pencocokan dalam File

Semua baris dari file /etc/host mengandung setidaknya satu nomor [0-9] Dalam contoh di atas.

Gunakan AWK dengan (^) karakter meta

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 untuk mencetak semua garis yang cocok dengan pola

Gunakan AWK dengan ($) karakter meta

Itu cocok dengan semua garis yang diakhiri dengan pola yang disediakan:

# awk '/ab $/print ' /etc /hosts # awk'/OST $/print ' /etc /hosts # awk'/rs $/print ' /etc /hosts 
Gunakan AWK untuk mencetak string pola yang diberikan

Gunakan AWK dengan (\) Escape Character

Ini memungkinkan Anda untuk mengambil karakter mengikutinya sebagai literal yang berarti mempertimbangkannya sama seperti itu.

Dalam contoh di bawah ini, perintah pertama mencetak semua baris dalam file, perintah kedua tidak mencetak apa -apa karena saya ingin mencocokkan baris yang memiliki $ 25.00, tapi tidak ada karakter pelarian yang digunakan.

Perintah ketiga benar karena karakter pelarian telah digunakan untuk membaca $ apa adanya.

# awk '//print 'penawaran.txt # awk '/$ 25.00/print 'penawaran.txt # awk '/\ $ 25.00/print 'penawaran.txt 
Gunakan AWK dengan Karakter Escape

Ringkasan

Itu tidak semuanya dengan AWK alat penyaringan baris perintah, contoh di atas operasi dasar awk. Di bagian selanjutnya kita akan maju tentang cara menggunakan fitur kompleks AWK. Terima kasih telah membaca dan untuk penambahan atau klarifikasi apa pun, posting komentar di bagian komentar.