Cara Menggunakan Awk dan Ekspresi Biasa Untuk Menapis Teks atau Rentetan Dalam Fail
- 3549
- 596
- Clarence Tromp
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:
- Watak biasa seperti ruang, garis bawah (_), a-z, a-z, 0-9.
- Watak meta Yang diperluaskan kepada watak biasa, mereka termasuk:
(.)
ia sepadan dengan mana -mana watak tunggal kecuali garis baru.(*)
ia sepadan dengan sifar atau lebih kewujudan watak segera sebelum ini.[ 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.^
ia sepadan dengan permulaan garis dalam fail.$
Memadankan akhir baris dalam fail.\
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/hostsAwk 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 /hostsCetakan 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 /hostsGunakan 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 /localhostGunakan 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 /hostsGunakan-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 /hostsGunakan AWK untuk mencetak rentetan yang dipadankan dalam fail
Menentukan watak dalam julat
Memahami watak dengan awk:
[0-9]
bermaksud satu nombor[A-Z]
bermaksud sepadan dengan satu huruf kes yang lebih rendah[A-Z]
bermaksud sepadan dengan satu huruf kes atas[a-za-z]
bermaksud sepadan dengan satu huruf[A-Za-Z 0-9]
bermaksud sepadan dengan satu huruf atau nombor
Mari lihat contoh di bawah:
# awk '/[0-9]/cetak ' /etc /hostsGunakan 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 /hostsGunakan 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 /hostsGunakan 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.txtGunakan 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.
- « SMEM-Laporan penggunaan memori per-proses dan asas pengguna di Linux
- Cara menggunakan AWK untuk mencetak medan dan lajur dalam fail »