Ini adalah artikel pertama pada seri tutorial awk baru. Kami akan memposting beberapa artikel tentang awk dalam beberapa minggu mendatang yang akan mencakup semua fitur awk dengan contoh praktis.
Dalam artikel ini, mari kita tinjau metodologi kerja awk dasar bersama dengan 7 contoh cetak awk praktis.
Catatan: Pastikan Anda meninjau Seri Tutorial Sed kami sebelumnya.
Awk Pengenalan dan Operasi Pencetakan
Awk adalah bahasa pemrograman yang memungkinkan manipulasi data terstruktur dengan mudah dan pembuatan laporan berformat. Awk adalah singkatan dari nama penulisnya “A hai, K einberger, dan K ernighan”
Awk sebagian besar digunakan untuk pemindaian dan pemrosesan pola. Ini mencari satu atau lebih file untuk melihat apakah mereka berisi baris yang cocok dengan pola yang ditentukan dan kemudian melakukan tindakan terkait.
Beberapa fitur utama Awk adalah:
- Awk melihat file teks sebagai record dan field.
- Seperti bahasa pemrograman pada umumnya, Awk memiliki variabel, kondisi, dan loop
- Awk memiliki operator aritmatika dan string.
- Awk dapat menghasilkan laporan berformat
Awk membaca dari file atau dari input standarnya, dan mengeluarkan output ke output standarnya. Awk tidak cocok dengan file non-teks.
Syntax: awk '/search pattern1/ {Actions} /search pattern2/ {Actions}' file
Dalam sintaks awk di atas:
- pola penelusuran adalah ekspresi reguler.
- Tindakan – pernyataan yang akan dilakukan.
- beberapa pola dan tindakan dimungkinkan di Awk.
- file – File masukan.
- Kutipan tunggal di sekitar program adalah untuk menghindari shell tidak menafsirkan karakter khusus apa pun.
Metodologi Kerja Awk
- Awk membaca file input satu per satu.
- Untuk setiap baris, itu cocok dengan pola yang diberikan dalam urutan yang diberikan, jika kecocokan melakukan tindakan yang sesuai.
- Jika tidak ada pola yang cocok, tidak ada tindakan yang akan dilakukan.
- Dalam sintaks di atas, pola pencarian atau tindakan adalah opsional, Tapi tidak keduanya.
- Jika pola pencarian tidak diberikan, maka Awk melakukan tindakan yang diberikan untuk setiap baris input.
- Jika tindakan tidak diberikan, cetak semua baris yang cocok dengan pola yang diberikan yang merupakan tindakan default.
- Kosongkan kurung kurawal tanpa tindakan apa pun tidak menghasilkan apa-apa. Itu tidak akan melakukan operasi pencetakan default.
- Setiap pernyataan dalam Tindakan harus dipisahkan dengan titik koma.
Mari kita buat file employee.txt yang memiliki konten berikut, yang akan digunakan dalam
contoh yang disebutkan di bawah ini.
$cat employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Sanjay Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy DBA Technology $6,000
Contoh Awk 1. Perilaku default Awk
Secara default, Awk mencetak setiap baris dari file.
$ awk '{print;}' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Sanjay Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy DBA Technology $6,000
Dalam contoh di atas pola tidak diberikan. Jadi tindakan berlaku untuk semua baris.
Aksi cetak tanpa argumen apa pun mencetak seluruh baris secara default. Jadi itu mencetak semua
baris file tanpa gagal. Tindakan harus diapit dengan kurung kurawal.
Contoh Awk 2. Cetak garis yang sesuai dengan pola.
$ awk '/Thomas/ > /Nisha/' employee.txt 100 Thomas Manager Sales $5,000 400 Nisha Manager Marketing $9,500
Dalam contoh di atas ia mencetak semua baris yang cocok dengan 'Thomas' atau 'Nisha'. Ini memiliki dua pola. Awk menerima sejumlah pola, tetapi setiap set (pola dan tindakan terkaitnya) harus dipisahkan oleh baris baru.
Contoh Awk 3. Cetak hanya bidang tertentu.
Awk memiliki jumlah variabel bawaan. Untuk setiap catatan yaitu baris, itu membagi catatan yang dibatasi oleh karakter spasi secara default dan menyimpannya dalam variabel $n. Jika baris memiliki 4 kata, itu akan disimpan dalam $1, $2, $3 dan $4. $0 mewakili seluruh baris. NF adalah variabel bawaan yang mewakili jumlah total bidang dalam catatan.
$ awk '{print $2,$5;}' employee.txt Thomas $5,000 Jason $5,500 Sanjay $7,000 Nisha $9,500 Randy $6,000 $ awk '{print $2,$NF;}' employee.txt Thomas $5,000 Jason $5,500 Sanjay $7,000 Nisha $9,500 Randy $6,000
Dalam contoh di atas $2 dan $5 masing-masing mewakili Nama dan Gaji. Kita bisa mendapatkan Gaji menggunakan $NF juga, di mana $NF mewakili bidang terakhir. Dalam pernyataan cetak ',' adalah sebuah rangkaian.
Contoh Awk 4. Inisialisasi dan Tindakan Akhir
Awk memiliki dua pola penting yang ditentukan oleh kata kunci yang disebut BEGIN dan END.
Syntax: BEGIN { Actions} {ACTION} # Action for everyline in a file END { Actions } # is for comments in Awk
Tindakan yang ditentukan di bagian BEGIN akan dijalankan sebelum mulai membaca baris dari input.
Tindakan AKHIR akan dilakukan setelah menyelesaikan membaca dan memproses baris dari input.
$ awk 'BEGIN {print "Name\tDesignation\tDepartment\tSalary";} > {print $2,"\t",$3,"\t",$4,"\t",$NF;} > END{print "Report Generated\n--------------"; > }' employee.txt Name Designation Department Salary Thomas Manager Sales $5,000 Jason Developer Technology $5,500 Sanjay Sysadmin Technology $7,000 Nisha Manager Marketing $9,500 Randy DBA Technology $6,000 Report Generated --------------
Dalam contoh di atas, ia mencetak judul dan file terakhir untuk laporan.
Contoh Awk 5. Temukan karyawan yang memiliki id karyawan lebih besar dari 200
$ awk '$1 >200' employee.txt 300 Sanjay Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy DBA Technology $6,000
Dalam contoh di atas, bidang pertama ($1) adalah id karyawan. Jadi jika $1 lebih besar dari 200, lakukan saja tindakan cetak default untuk mencetak seluruh baris.
Contoh Awk 6. Cetak daftar karyawan di departemen Teknologi
Sekarang nama departemen tersedia sebagai bidang keempat, jadi perlu memeriksa apakah $4 cocok dengan string “Teknologi”, jika ya, cetak baris tersebut.
$ awk '$4 ~/Technology/' employee.txt 200 Jason Developer Technology $5,500 300 Sanjay Sysadmin Technology $7,000 500 Randy DBA Technology $6,000
Operator ~ adalah untuk membandingkan dengan ekspresi reguler. Jika cocok dengan tindakan default, yaitu mencetak seluruh baris akan dilakukan.
Contoh Awk 7. Cetak jumlah karyawan di departemen Teknologi
Contoh di bawah, memeriksa apakah departemen adalah Teknologi, jika ya, dalam Tindakan, cukup tambahkan variabel hitungan, yang diinisialisasi dengan nol di bagian BEGIN.
$ awk 'BEGIN { count=0;} $4 ~ /Technology/ { count++; } END { print "Number of employees in Technology Dept =",count;}' employee.txt Number of employees in Tehcnology Dept = 3
Kemudian di akhir proses, cukup cetak nilai hitungan yang memberi Anda jumlah karyawan di departemen Teknologi.
Bacaan yang Disarankan
Sed dan Awk 101 Hacks, oleh Ramesh Natarajan . Saya menghabiskan beberapa jam sehari di lingkungan UNIX / Linux yang berurusan dengan file teks (data, konfigurasi, dan file log). Saya menggunakan Sed dan Awk untuk semua pekerjaan manipulasi teks saya. Berdasarkan pengalaman Sed dan Awk saya, saya telah menulis eBook Sed dan Awk 101 Hacks yang berisi 101 contoh praktis tentang berbagai fitur canggih Sed dan Awk yang akan meningkatkan kehidupan UNIX / Linux Anda. Bahkan jika Anda telah menggunakan Sed dan Awk selama beberapa tahun dan belum membaca buku ini, bantulah diri Anda sendiri dan baca buku ini. Anda akan kagum dengan kemampuan utilitas Sed dan Awk.
Artikel Awk Tambahan
- Variabel Buatan Pengguna Awk dengan 3 Contoh Praktis
- 8 Variabel Bawaan Awk yang Kuat – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR
- 7 Contoh Operator Awk yang Kuat (Unary, Binary, Arithmetic, String, Assignment, Conditional, Reg-Ex Operator Awk)
- 4 Contoh Pernyataan Awk If ( if, if else, if else if, :? )
- Terperangkap dalam Lingkaran? Awk While, Do While, For Loop, Break, Continue, Exit Contoh