Cara Menggunakan Awk dan Ekspresi Biasa Untuk Menapis Teks atau Rentetan Dalam Fail

Cara Menggunakan Awk dan Ekspresi Biasa Untuk Menapis Teks atau Rentetan Dalam Fail

Apabila kita menjalankan arahan tertentu di Unix/Linux untuk membaca atau mengedit teks dari rentetan atau fail, kami paling banyak cuba menapis output ke bahagian minat yang diberikan. Di sinilah menggunakan ungkapan biasa yang berguna.

Baca juga: 10 Pengendali Chaining Linux yang berguna dengan contoh praktikal

Apakah ungkapan biasa?

Ungkapan biasa dapat ditakrifkan sebagai rentetan yang mewakili beberapa urutan aksara. Salah satu perkara yang paling penting mengenai ungkapan biasa ialah mereka membolehkan anda menapis output arahan atau fail, mengedit bahagian teks atau fail konfigurasi dan sebagainya.

Ciri -ciri ungkapan biasa

Ekspresi biasa dibuat:

  1. Watak biasa seperti ruang, garis bawah (_), a-z, a-z, 0-9.
  2. Watak meta Yang diperluaskan kepada watak biasa, mereka termasuk:
    1. (.) ia sepadan dengan mana -mana watak tunggal kecuali garis baru.
    2. (*) ia sepadan dengan sifar atau lebih kewujudan watak segera sebelum ini.
    3. [ watak) ] ia sepadan dengan mana -mana watak yang dinyatakan dalam watak, seseorang juga boleh menggunakan tanda hubung (-) bermaksud pelbagai watak seperti [A-F], [1-5], dan sebagainya.
    4. ^ ia sepadan dengan permulaan garis dalam fail.
    5. $ Memadankan akhir baris dalam fail.
    6. \ ia adalah watak melarikan diri.

Untuk menapis teks, seseorang mesti menggunakan alat penapisan teks seperti awk. Anda boleh memikirkan awk sebagai bahasa pengaturcaraan sendiri. Tetapi untuk skop panduan ini untuk menggunakan awk, kita akan menutupnya sebagai alat penapisan baris perintah yang mudah.

Sintaks umum Awk adalah:

nama fail # awk 'skrip' 

Di mana 'Skrip' adalah satu set arahan yang difahami oleh awk dan dilaksanakan pada fail, nama fail.

Ia berfungsi dengan membaca garis tertentu dalam fail, membuat salinan baris dan kemudian melaksanakan skrip pada baris. Ini diulangi pada semua baris dalam fail.

The 'Skrip' ada dalam bentuk '/ corak/ tindakan' di mana corak adalah ungkapan biasa dan tindakan adalah apa yang akan dilakukan oleh Awk apabila ia mendapati corak yang diberikan dalam satu baris.

Cara Menggunakan Alat Penapisan Awk di Linux

Dalam contoh berikut, kita akan memberi tumpuan kepada watak meta yang dibincangkan di atas di bawah ciri -ciri AWK.

Contoh mudah menggunakan AWK:

Contoh di bawah mencetak semua baris dalam fail /etc/hos Oleh kerana tiada corak diberikan.

# awk '//cetak '/etc/hosts 
Awk mencetak semua baris dalam fail

Gunakan AWK dengan corak:

Saya contoh di bawah, corak localhost telah diberikan, jadi awk akan sesuai dengan garis yang mempunyai localhost di dalam /etc/hos fail.

# awk '/localhost/cetak ' /etc /hosts 
Cetakan awk diberikan garis sepadan dalam fail

Menggunakan Awk dengan (.) Kad liar dalam corak

The (.) akan sesuai dengan rentetan yang mengandungi loc, localhost, localnet Dalam contoh di bawah.

Iaitu * l some_single_character c *.

# awk '/L.c/cetak ' /etc /hosts 
Gunakan AWK untuk mencetak rentetan sepadan dalam fail

Menggunakan Awk dengan (*) watak dalam corak

Ia akan sesuai dengan rentetan yang mengandungi localhost, localnet, garis, mampu, Seperti dalam contoh di bawah:

# awk '/l*c/cetak ' /etc /localhost 
Gunakan AWK untuk memadankan rentetan dalam fail

Anda juga akan menyedari bahawa (*) cuba membuat anda perlawanan terpanjang yang mungkin dapat mengesan.

Mari lihat kes yang menunjukkan ini, ambil ungkapan biasa t*t yang bermaksud rentetan perlawanan yang bermula dengan huruf t dan berakhir dengan t Dalam baris di bawah:

Ini adalah Tecmint, di mana anda mendapat tutorial terbaik, bagaimana untuk, panduan, tecmint. 

Anda akan mendapat kemungkinan berikut apabila anda menggunakan corak /t*t/:

Ini ini adalah Tecmint Ini adalah Tecmint, di mana anda mendapat t ini Tecmint, di mana anda mendapat yang terbaik t ini Tecmint, di mana anda mendapat tutorial yang terbaik, bagaimana ini Tecmint, di mana anda mendapat tutorial yang terbaik , bagaimana tos, panduan, ini adalah tecmint, di mana anda mendapat tutorial yang terbaik, bagaimana tos, panduan, tecmint 

Dan (*) dalam /t*t/ Watak Kad Wild membolehkan Awk memilih pilihan terakhir:

Ini adalah Tecmint, di mana anda mendapat tutorial terbaik, bagaimana untuk, panduan, tecmint 

Menggunakan AWK dengan set [aksara (s)]

Ambil contohnya set [AL1], di sini awk akan sepadan dengan semua rentetan yang mengandungi watak a atau L atau 1 dalam baris dalam fail /etc/hos.

# awk '/[AL1]/cetak ' /etc /hosts 
Gunakan-AWK untuk mencetak watak sepadan dalam fail

Contoh seterusnya sepadan dengan rentetan bermula dengan sama ada K atau k diikuti oleh T:

# awk '/[Kk] t/cetak ' /etc /hosts 
Gunakan AWK untuk mencetak rentetan yang dipadankan dalam fail

Menentukan watak dalam julat

Memahami watak dengan awk:

  1. [0-9] bermaksud satu nombor
  2. [A-Z] bermaksud sepadan dengan satu huruf kes yang lebih rendah
  3. [A-Z] bermaksud sepadan dengan satu huruf kes atas
  4. [a-za-z] bermaksud sepadan dengan satu huruf
  5. [A-Za-Z 0-9] bermaksud sepadan dengan satu huruf atau nombor

Mari lihat contoh di bawah:

# awk '/[0-9]/cetak ' /etc /hosts 
Gunakan AWK untuk mencetak nombor sepadan dalam fail

Semua baris dari fail /etc/hos mengandungi sekurang -kurangnya satu nombor [0-9] Dalam contoh di atas.

Gunakan Awk dengan (^) watak meta

Ia sepadan dengan semua baris yang bermula dengan corak yang disediakan seperti dalam contoh di bawah:

# awk '/^fe/cetak ' /etc /hosts # awk'/^ff/cetak ' /etc /hosts 
Gunakan AWK untuk mencetak semua baris yang sepadan dengan corak

Gunakan AWK dengan watak meta ($)

Ia sepadan dengan semua baris yang berakhir dengan corak yang disediakan:

# awk '/ab $/cetak ' /etc /hosts # awk'/ost $/cetak ' /etc /hosts # awk'/Rs $/cetak ' /etc /hosts 
Gunakan AWK untuk mencetak rentetan corak yang diberikan

Gunakan AWK dengan watak melarikan diri (\)

Ia membolehkan anda mengambil watak yang mengikutinya sebagai literal yang dikatakan menganggapnya seperti itu.

Dalam contoh di bawah, arahan pertama mencetak semua baris dalam fail, arahan kedua tidak mencetak apa -apa kerana saya mahu memadankan garis yang mempunyai $ 25.00, Tetapi tidak ada watak melarikan diri yang digunakan.

Perintah ketiga adalah betul kerana watak melarikan diri telah digunakan untuk dibaca $ seperti sedia ada.

# awk '//cetak 'Tawaran.txt # awk '/$ 25.00/cetak 'Tawaran.txt # awk '/\ $ 25.00/cetak 'Tawaran.txt 
Gunakan Awk dengan watak melarikan diri

Ringkasan

Itu bukan semua dengan awk alat penapisan baris perintah, contoh di atas operasi asas AWK. Di bahagian seterusnya kita akan memajukan cara menggunakan ciri -ciri kompleks AWK. Terima kasih kerana membaca dan untuk sebarang penambahan atau penjelasan, hantar komen di bahagian komen.