Awk - pengenalan dan tutorial

Awk - pengenalan dan tutorial

Semasa bekerja dengan Linux, salah satu alat yang paling berkuasa yang tersedia untuk pemprosesan teks ialah arahan AWK. Ini alat baris arahan serba boleh yang boleh digunakan untuk pelbagai tugas, termasuk mencari, menapis, dan memanipulasi data teks.

Dalam artikel ini, kami akan merangkumi asas -asas AWK, termasuk sintaksnya, cara menggunakannya pada baris arahan, dan beberapa contoh asas bagaimana ia dapat digunakan untuk memproses data teks.

Apa itu Awk?

Awk adalah bahasa pengaturcaraan yang direka untuk pemprosesan teks dan pengekstrakan data. Ia dibangunkan di Bell Labs pada tahun 1970-an dan kini merupakan ciri standard sistem operasi berasaskan UNIX, termasuk Linux.

AWK amat berguna untuk memproses fail teks, kerana ia membolehkan anda mencari, menapis, dan memanipulasi data berdasarkan corak atau syarat tertentu. Ia berfungsi dengan membaca data dari fail atau input standard, menggunakan satu set peraturan atau arahan ke data tersebut, dan kemudian mencetak hasilnya.

Sintaks Awk

Sintaks asas perintah AWK adalah seperti berikut:

corak awk 'action' fail
1corak awk 'action' fail

Di sini, corak menentukan syarat -syarat yang mesti dipenuhi untuk tindakan yang dilakukan, dan fail menentukan fail yang harus dikendalikan oleh arahan. Sekiranya tiada fail ditentukan, AWK akan membaca data dari input standard (i.e., papan kekunci).

Corak boleh menjadi ungkapan biasa atau pelbagai nilai, dan tindakan itu boleh menjadi arahan AWK yang sah, termasuk penyataan cetak, pembolehubah, dan gelung.

AWK satu pernyataan satu-liner

Salah satu perkara hebat tentang Awk ialah ia boleh digunakan untuk menulis satu -liners - arahan pendek dan kuat yang boleh dijalankan terus dari baris arahan.

Berikut adalah beberapa contoh AWK One-Liners yang boleh anda gunakan untuk melaksanakan tugas pemprosesan teks biasa:

  • Cetak lajur pertama fail CSV:
    AWK -F "," 'Print $ 1' Fail.CSV  
  • Cetak lajur tertentu fail CSV:
    AWK -F "," 'Print $ 1, $ 3' Fail.CSV  

    Perintah ini menggunakan pilihan -f untuk menentukan bahawa fail itu dipisahkan koma, dan kemudian mencetak lajur pertama dan ketiga fail.

  • Kira bilangan baris dalam fail:
    AWK 'END PRINT NR' Fail.txt  
  • Cetak semua baris yang sesuai dengan corak tertentu ::
    Awk '/ corak/ print' fail.txt  
  • Kira bilangan kejadian corak dalam fail:
    awk '/ corak/ count ++ end print count' fail.txt  
  • Cetak baris terakhir fail:
    fail 'end print'.txt  
  • Cetak nilai purata lajur dalam fail:
    awk 'sum+= $ 2 end print sum/nr' Fail.txt  
  • Cetak purata lajur kedua dalam fail:
    awk 'sum += $ 2 end print sum/nr' Fail.txt  
  • Cetak garisan dalam urutan terbalik:
    awk 'a [i ++] = $ 0 end for (j = i-1; j> = 0;) cetak a [j--]' fail.txt  
  • Cetak kandungan fail:
    fail 'print'.txt  

    Perintah ini hanya membaca kandungan fail.txt dan cetak setiap baris ke skrin.

  • Cari garis yang mengandungi corak tertentu:
    AWK '/ error/ print' fail.log  

    Perintah ini mencari baris yang mengandungi perkataan "ralat" dan mencetaknya ke skrin.

Anda mungkin suka: Operasi Aritmetik Awk: Panduan Pemula untuk Kaedah Pengiraan Asas

Awk untuk Pentadbiran Sistem

Sekarang mari kita lihat beberapa contoh praktikal bagaimana Awk dapat digunakan untuk tugas pentadbiran sistem.

Parsing Log Files

Fail log adalah alat penting untuk pentadbir sistem untuk memantau prestasi sistem dan mendiagnosis masalah. Walau bagaimanapun, mereka sukar dibaca dan dianalisis, terutamanya apabila mereka mengandungi sejumlah besar data.

AWK boleh digunakan untuk menghuraikan fail log dan mengekstrak maklumat yang relevan. Sebagai contoh, arahan berikut akan mengekstrak semua alamat IP dari fail log akses Apache:

AWK 'Print $ 1' Akses.log
1AWK 'Print $ 1' Akses.log

Perintah ini akan mencetak lajur pertama fail log akses, yang mengandungi alamat IP pelanggan.

Sumber sistem pemantauan

AWK juga boleh digunakan untuk memantau sumber sistem, seperti CPU dan penggunaan memori. Sebagai contoh, arahan berikut akan memaparkan 5 proses teratas yang memakan CPU yang paling banyak:

ps aux | awk 'cetak $ 2, $ 3, $ 11' | sort -k2rn | kepala -n5
1ps aux | awk 'cetak $ 2, $ 3, $ 11' | sort -k2rn | kepala -n5

Perintah ini akan menggunakan PS untuk menyenaraikan semua proses berjalan, kemudian gunakan AWK untuk mengekstrak ID proses, penggunaan CPU, dan nama proses. Perintah jenis digunakan untuk menyusun output dengan penggunaan CPU, dan arahan kepala digunakan untuk memaparkan hanya 5 hasil teratas.

Menghasilkan laporan

Pentadbir Sistem sering perlu menghasilkan laporan mengenai pelbagai aspek prestasi sistem dan penggunaan. AWK boleh digunakan untuk mengekstrak dan meringkaskan data dari fail log, fail sistem, dan sumber lain.

Sebagai contoh, arahan berikut akan menghasilkan laporan mengenai penggunaan cakera semua sistem fail yang dipasang:

DF -H | awk 'cetak $ 1, $ 5'
1DF -H | awk 'cetak $ 1, $ 5'

Perintah ini akan menggunakan DF untuk menyenaraikan semua sistem fail yang dipasang, kemudian gunakan AWK untuk mengekstrak nama sistem fail dan peratusan ruang cakera yang digunakan.

Mengubah fail konfigurasi

Fail konfigurasi adalah bahagian penting dalam pentadbiran sistem, dan sering perlu diubah suai untuk mengoptimumkan prestasi sistem atau menyelesaikan masalah. AWK boleh digunakan untuk mengubah suai fail konfigurasi di tempat, tanpa memerlukan penyuntingan manual.

Sebagai contoh, arahan berikut akan menggantikan semua kejadian "localhost" dengan "contoh.com "dalam fail konfigurasi Apache:

awk 'gsub (/localhost/, "contohnya.com "); cetak '/etc/apache2/apache2.conf> /tmp /apache2.Conf
1awk 'gsub (/localhost/, "contohnya.com "); cetak '/etc/apache2/apache2.conf> /tmp /apache2.Conf

Perintah ini akan menggunakan Awk untuk mencari rentetan "localhost" dalam fail konfigurasi Apache, dan menggantinya dengan "contoh.com "". Fail konfigurasi yang diubah suai kemudian ditulis ke fail sementara.

Kesimpulan

AWK adalah alat yang berkuasa untuk pemprosesan teks dan pengekstrakan data di Linux. Ia agak mudah dipelajari dan menyediakan pelbagai keupayaan yang boleh digunakan untuk memanipulasi dan mengubah data teks.

Dalam artikel ini, kami merangkumi asas -asas AWK, termasuk sintaksnya, cara menggunakannya pada baris arahan, dan beberapa contoh asas bagaimana ia dapat digunakan untuk memproses data teks. Kami juga meliputi Awk One-Liners, yang merupakan arahan yang kuat yang boleh digunakan untuk melaksanakan tugas pemprosesan teks biasa dengan usaha yang minimum.

Dengan pengetahuan ini, anda boleh mula meneroka ciri -ciri AWK yang lebih canggih, termasuk ungkapan biasa, pembolehubah, dan fungsi. Dengan menguasai AWK, anda boleh menjadi pengguna Linux yang lebih cekap dan berkesan, yang mampu memproses sejumlah besar data teks dengan mudah.