Awk adalah bahasa yang kuat untuk memanipulasi dan memproses file teks. Ini sangat membantu ketika baris dalam file teks dalam format rekaman. yaitu Catatan yang berisi beberapa bidang yang dipisahkan oleh pembatas. Bahkan ketika file input tidak dalam format record, Anda masih dapat menggunakan awk untuk melakukan beberapa file dasar dan pemrosesan data. Anda juga dapat menulis logika pemrograman menggunakan awk meskipun tidak ada file input yang perlu diproses.
Singkatnya, AWK adalah bahasa yang kuat, yang berguna untuk melakukan pekerjaan rutin sehari-hari.
Jika Anda baru mengenal awk, mulailah dengan membaca tutorial pengenalan Awk ini yang merupakan bagian dari seri tutorial Awk.
Kurva belajar pada AWK jauh lebih kecil daripada kurva belajar pada bahasa lain. Jika Anda sudah mengetahui program C, Anda akan menghargai betapa sederhana dan mudahnya mempelajari AWK.
AWK awalnya ditulis oleh tiga pengembang — A. Aho, B. W. Kernighan dan P. Weinberger. Jadi, nama AWK berasal dari inisial ketiga developer tersebut.
Berikut ini adalah tiga variasi AWK:
1. Awk
AWK adalah AWK asli yang ditulis oleh A. Aho, B. W. Kernighan dan P. Weinberger.
2. Nakal
NAWK adalah singkatan dari "AWK Baru". Ini adalah Awk versi AT&T.
3. Ngakak
GAWK adalah singkatan dari "GNU AWK". Semua distribusi Linux dilengkapi dengan GAWK. Ini sepenuhnya kompatibel dengan AWK dan NAWK.
Di Linux, mengetik awk atau gawk akan memanggil GAWK. awk ditautkan ke gawk seperti yang ditunjukkan di bawah ini pada sistem Linux.
# ls -l /bin/awk /usr/bin/awk lrwxrwxrwx 1 root root 4 Jan 5 23:13 /bin/awk -> gawk lrwxrwxrwx 1 root root 14 Jan 5 23:13 /usr/bin/awk -> ../../bin/gawk
Tabel berikut merangkum berbagai fitur yang tersedia di versi ini. Seperti yang Anda lihat di bawah, gawk adalah superset yang berisi semua fitur awk dan nawk asli.
Awk Vs Nawk Vs Gawk
Unduh perbedaan Awk Vs Nawk Vs Gawk dalam format cheatsheet PDF.
Variabel bawaan dasar berikut FS, OFS, RS, ORS, NR, NF, dan FILENAME tersedia di semua versi awk.
Fitur | Deskripsi | AWK | TIDAK | GAWK |
---|---|---|---|---|
FS | Pemisah bidang masukan | Ya | Ya | Ya |
OFS | Pemisah bidang keluaran | Ya | Ya | Ya |
RS | Pemisah rekaman | Ya | Ya | Ya |
ORS | Pemisah catatan keluaran | Ya | Ya | Ya |
NR | Jumlah catatan | Ya | Ya | Ya |
NF | Jumlah bidang dalam catatan | Ya | Ya | Ya |
FILENAME | Berisi file input saat ini yang sedang diproses | Ya | Ya | Ya |
Semua fitur berikut tidak tersedia di awk asli. Mereka tersedia dalam nawk dan/atau gawk seperti yang ditunjukkan di bawah ini.
Fitur | Deskripsi | TIDAK | GAWK |
---|---|---|---|
FNR | File “Nomor catatan” | Ya | Ya |
ARGC | Total jumlah atau argumen yang diteruskan ke skrip awk | Ya | Ya |
ARGV | Array yang berisi semua argumen skrip awk | Ya | Ya |
ARGIND | Indeks ke ARGV untuk mengambil nama file saat ini | Ya | |
SUBSEP | Pemisah subskrip untuk indeks array | Ya | Ya |
RSTART | Fungsi pencocokan menyetel RSTART dengan lokasi awal str1 di str2 | Ya | Ya |
SELENGKAPNYA | Fungsi pencocokan menyetel RLENGTH dengan panjang str1 | Ya | Ya |
OFMT | Awk menggunakan ini untuk memutuskan cara mencetak nilai. Standarnya adalah “%.6g” | Ya | Ya |
LINGKUNGAN | Array yang berisi semua variabel dan nilai lingkungan | Ya | |
ABAIKAN KASUS | Defaultnya adalah 0. Jika disetel ke 1, ini tidak peka huruf besar-kecil untuk perbandingan string dan reg-ex. | Ya | |
KESALAHAN | Berisi pesan kesalahan operasi I/O. misalnya saat menggunakan fungsi getline. | Ya | |
BINMODE n | Menyetel mode biner untuk I/O. n dapat berupa 1 (file input), 2 (file output), atau 3 (semua file) | Ya | |
CONVFMT | Format yang digunakan saat mengonversi angka menjadi string. | Ya | |
FIELDWIDTHS n | n adalah angka yang dipisahkan spasi yang menunjukkan lebar kolom. Jika ini tersedia, gawk menggunakan ini sebagai ganti FS. | Ya | |
LINT dan | n bisa berupa angka. Ketika n adalah angka bukan nol (menunjukkan benar), gawk akan menampilkan pesan lint yang fatal, tidak valid, atau peringatan (sama seperti baris perintah –lint) | Ya | |
TEXTDOMAIN | Ini digunakan untuk internasionalisasi. | Ya | |
sub(str1,str2,var) | Dalam string input (var), str1 diganti dengan str2, dan output disimpan kembali di var | Ya | Ya |
gsub(str1,str2,var) | Sama seperti sub, tapi global. Itu melakukan beberapa substitusi pada string input yang sama (var). | Ya | Ya |
cocok(str1,str2) | Mengembalikan bilangan positif ketika str1 ada di str2. | Ya | Ya |
getline Baca baris berikutnya dari file input lain. Setel $0, NF | Ya | Ya | |
getline var Baca baris berikutnya dari file input lain dan simpan dalam variabel (var) | Ya | Ya | |
toupper(str) | Mengubah str menjadi huruf besar | Ya | |
tolower(str) | Mengubah str menjadi huruf kecil | Ya | |
|& | Komunikasi dua arah antara perintah awk dan proses eksternal | Ya | |
sistem() | Waktu saat ini dalam waktu zaman. Kombinasikan dengan strftime. misalnya print strftime(“%c”,systime()) | Ya |