Cara Menulis Perintah dan Skrip AWK

Perintah, sintaks, dan contoh

Perintah awk adalah metode yang kuat untuk memproses atau menganalisis file teks - khususnya, file data yang diatur oleh garis (baris) dan kolom.

Perintah awk sederhana dapat dijalankan dari baris perintah . Tugas yang lebih kompleks harus ditulis sebagai program awk (yang disebut skrip awk) ke file.

Format dasar perintah awk terlihat seperti ini:

awk 'pattern {action}' input-file> output-file

Ini berarti: ambil setiap baris file input; jika garis berisi pola, berlaku tindakan ke garis dan tulis garis yang dihasilkan ke file output. Jika pola tersebut dihilangkan, tindakan diterapkan ke semua lini. Sebagai contoh:

awk '{print $ 5}' table1.txt> output1.txt

Pernyataan ini mengambil elemen kolom ke-5 dari setiap baris dan menulisnya sebagai garis dalam file output "output.txt". Variabel '$ 4' mengacu pada kolom kedua. Demikian pula Anda dapat mengakses kolom pertama, kedua, dan ketiga, dengan $ 1, $ 2, $ 3, dll. Secara default, kolom diasumsikan dipisahkan oleh spasi atau tab (disebut spasi putih). Jadi, jika file input "table1.txt" berisi baris-baris berikut:

1, Justin Timberlake, Judul 545, Harga $ 7,30 2, Taylor Swift, Judul 723, Harga $ 7,90 3, Mick Jagger, Judul 610, Harga $ 7,90 4, Lady Gaga, Judul 118, Harga $ 7,30 5, Johnny Cash, Judul 482, Harga $ 6,50 6, Elvis Presley, Judul 335, Harga $ 7,30 7, John Lennon, Judul 271, Harga $ 7,90 8, Michael Jackson, Judul 373, Harga $ 5,50

Maka perintah akan menulis baris berikut ke file output "output1.txt":

545, 723, 610, 118, 482, 335, 271, 373,

Jika pemisah kolom adalah sesuatu selain ruang atau tab, seperti koma, Anda dapat menentukannya dalam pernyataan awk sebagai berikut:

awk -F, '{print $ 3}' table1.txt> output1.txt

Ini akan memilih elemen dari kolom 3 dari setiap baris jika kolom dianggap dipisahkan oleh koma. Oleh karena itu, output, dalam hal ini, adalah:

Judul 545 Judul 723 Judul 610 Judul 118 Judul 482 Judul 335 Judul 271 Judul 373

Daftar pernyataan di dalam kurung kurawal ('{', '}') disebut blok. Jika Anda meletakkan ekspresi kondisional di depan blok, pernyataan di dalam blok akan dijalankan hanya jika kondisinya benar.

awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txt

Dalam kasus ini, kondisinya $ 7 == "\ $ 7.30", yang berarti bahwa elemen di kolom 7 sama dengan $ 7.30. Tanda garis miring terbalik di depan tanda dolar digunakan untuk mencegah sistem menafsirkan $ 7 sebagai variabel dan sebaliknya mengambil tanda dolar secara harfiah.

Jadi pernyataan awk ini mencetak elemen di kolom ke-3 dari setiap baris yang memiliki "$ 7,30" di kolom 7.

Anda juga dapat menggunakan ekspresi reguler sebagai kondisinya. Sebagai contoh:

awk '/ 30 / {print $ 3}' table1.txt

String antara dua garis miring ('/') adalah ekspresi reguler. Dalam hal ini, itu hanya string "30." Ini berarti jika sebuah baris berisi string "30", sistem akan mencetak elemen di kolom ke-3 dari baris tersebut. Output dalam contoh di atas adalah:

Timberlake, Gaga, Presley,

Jika elemen tabel adalah nomor awk dapat menjalankan perhitungan pada mereka seperti pada contoh ini:

awk '{print ($ 2 * $ 3) + $ 7}'

Selain variabel yang mengakses elemen baris saat ini ($ 1, $ 2, dll) ada variabel $ 0 yang mengacu pada baris lengkap (garis), dan variabel NF yang memegang ke jumlah bidang.

Anda juga dapat menentukan variabel baru seperti pada contoh ini:

awk '{jumlah = 0; untuk (col = 1; col <= NF; col ++) jumlah + = $ col; jumlah cetak; } '

Ini menghitung dan mencetak jumlah semua elemen dari setiap baris.

Pernyataan awk sering dikombinasikan dengan perintah sed .