GNU/Linux >> Belajar Linux >  >> Linux

Tutorial Pengenalan Awk – 7 Contoh Cetak Awk

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

  1. Awk membaca file input satu per satu.
  2. Untuk setiap baris, itu cocok dengan pola yang diberikan dalam urutan yang diberikan, jika kecocokan melakukan tindakan yang sesuai.
  3. Jika tidak ada pola yang cocok, tidak ada tindakan yang akan dilakukan.
  4. Dalam sintaks di atas, pola pencarian atau tindakan adalah opsional, Tapi tidak keduanya.
  5. Jika pola pencarian tidak diberikan, maka Awk melakukan tindakan yang diberikan untuk setiap baris input.
  6. Jika tindakan tidak diberikan, cetak semua baris yang cocok dengan pola yang diberikan yang merupakan tindakan default.
  7. Kosongkan kurung kurawal tanpa tindakan apa pun tidak menghasilkan apa-apa. Itu tidak akan melakukan operasi pencetakan default.
  8. 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

Linux
  1. Tutorial perintah cd Linux untuk pemula (8 Contoh)

  2. 4 Contoh Pernyataan Awk If ( if, if else, if else if, :? )

  3. Contoh Perintah lpr di Linux

  1. Tutorial Awk:Memahami Variabel Awk dengan 3 Contoh Praktis

  2. Contoh Perintah awk di Linux

  3. awk:perintah tidak ditemukan

  1. Tutorial Bash HereDoc Dengan Contoh

  2. Perintah AWK di Linux dengan Contoh

  3. Tutorial Perintah Awk Linux/UNIX dengan Contoh