awk gawk - pemindaian pola dan bahasa pemrosesan
gawk [ POSIX or GNU style options ] -f program-file [ - - ] file . . .
gawk [ POSIX or GNU style options ] [ - - ] program-text file . . .
Gawk adalah implementasi Proyek GNU dari bahasa pemrograman AWK. Itu sesuai dengan definisi bahasa dalam standar POSIX 1003.1. Versi ini pada gilirannya didasarkan pada deskripsi dalam Bahasa Pemrograman AWK, oleh Aho, Kernighan, dan Weinberger. Gawk menyediakan fitur tambahan yang ditemukan di versi saat ini dari awk Brian Kernighan dan berbagai ekstensi khusus GNU.
Baris perintah terdiri dari opsi untuk memandang itu sendiri, teks program AWK (jika tidak disediakan melalui opsi -f atau - -include), dan nilai yang akan disediakan dalam variabel AWK ARGC dan ARGV yang telah ditentukan sebelumnya.
Halaman manual ini sengaja dibuat seringkas mungkin. Detail lengkap disediakan di GAWK: Pemrograman AWK yang Efektif, dan Anda harus mencari cerita lengkap tentang fitur tertentu di sana. Jika memungkinkan, tautan ke manual versi online disediakan.
Opsi Gawk dapat berupa opsi satu huruf gaya POSIX tradisional, atau opsi panjang gaya GNU. Opsi POSIX dimulai dengan satu "-", sedangkan opsi panjang dimulai dengan "- -". Opsi panjang disediakan untuk fitur khusus GNU dan untuk fitur yang diamanatkan POSIX.
Gawk-opsi khusus biasanya digunakan dalam bentuk opsi panjang. Argumen untuk opsi panjang digabungkan dengan opsi dengan tanda =, tanpa spasi, atau dapat diberikan dalam argumen baris perintah berikutnya. Opsi panjang dapat disingkat, asalkan singkatannya tetap unik.
Selain itu, setiap opsi panjang memiliki opsi pendek yang sesuai, sehingga fungsionalitas opsi dapat digunakan dari dalam #! skrip yang dapat dieksekusi.
Gawk menerima opsi berikut. Opsi standar dicantumkan terlebih dahulu, diikuti oleh opsi untuk ekstensi gawk, dicantumkan menurut abjad dengan opsi pendek.
- -file program-file Baca sumber program AWK dari file program-file, bukan dari argumen baris perintah pertama. Beberapa opsi -f dapat digunakan. File yang dibaca dengan -f diperlakukan seolah-olah dimulai dengan pernyataan implisit @namespace "awk".
- -field-separator fs Gunakan fs untuk pemisah kolom input (nilai variabel FS yang telah ditentukan sebelumnya) .
Tetapkan nilai val ke variabel var, sebelum eksekusi program dimulai. Nilai variabel tersebut tersedia untuk aturan BEGIN dari program AWK.
- -characters-as-bytes Perlakukan semua data masukan sebagai karakter bita tunggal. Opsi - -posix menggantikan opsi ini.
- -tradisional Jalankan dalam mode kompatibilitas. Dalam mode kompatibilitas, gawk berperilaku identik dengan awk Brian Kernighan; tidak ada ekstensi khusus GNU yang dikenali.
- -copyright Cetak pesan informasi hak cipta GNU versi pendek pada keluaran standar dan keluar dengan sukses.
Cetak daftar variabel global yang telah disortir, jenisnya, dan nilai akhirnya ke file. File defaultnya adalah awkvars.out di direktori saat ini.
Aktifkan debug program AWK. Secara default, debugger membaca perintah secara interaktif dari keyboard (input standar). Argumen file opsional menentukan file dengan daftar perintah untuk dijalankan oleh debugger secara non-interaktif.
Dalam mode eksekusi ini, gawk memuat kode sumber AWK lalu meminta perintah debugging. Gawk hanya dapat men-debug sumber program AWK yang disediakan dengan opsi -f dan - -include. Debugger didokumentasikan dalam GAWK: Pemrograman AWK yang Efektif; lihat https://www.gnu.org/software/gawk/manual/html_node/Debugger.html#Debugger.
- -source program-text Gunakan program-text sebagai kode sumber program AWK. Setiap argumen yang diberikan melalui -e diperlakukan seolah-olah dimulai dengan pernyataan implisit @namespace "awk".
Mirip dengan -f, namun, opsi ini adalah yang terakhir diproses. Ini harus digunakan dengan skrip #!, terutama untuk aplikasi CGI, untuk menghindari penerusan opsi atau kode sumber (!) pada baris perintah dari URL. Opsi ini menonaktifkan penetapan variabel baris perintah.
- -gen-pot Pindai dan parsing program AWK, dan buat file berformat GNU .pot (Portable Object Template) pada keluaran standar dengan entri untuk semua string yang dapat dilokalkan di program. Program itu sendiri tidak dijalankan.
- -help Mencetak ringkasan yang relatif singkat dari opsi yang tersedia pada output standar. Sesuai Standar Pengodean GNU, opsi ini menyebabkan keluar dengan segera dan berhasil.
Muat perpustakaan sumber awk. Ini mencari perpustakaan menggunakan variabel lingkungan AWKPATH. Jika pencarian awal gagal, upaya lain akan dilakukan setelah menambahkan akhiran .awk. File akan dimuat hanya sekali (yaitu, duplikat dihilangkan), dan kode tersebut bukan merupakan sumber program utama. File yang dibaca dengan - -include diperlakukan seolah-olah dimulai dengan pernyataan implisit @namespace "awk".
- -trace Mencetak nama kode byte internal saat dieksekusi saat menjalankan program. Jejak dicetak ke kesalahan standar. Setiap ``op code'' didahului dengan tanda + di output.
- -load lib Muat ekstensi gawk dari pustaka bersama lib. Ini mencari perpustakaan menggunakan variabel lingkungan AWKLIBPATH. Jika pencarian awal gagal, upaya lain akan dilakukan setelah menambahkan sufiks pustaka bersama default untuk platform. Rutin inisialisasi pustaka diharapkan diberi nama dl_load().
Berikan peringatan tentang konstruksi yang meragukan atau tidak portabel untuk implementasi AWK lainnya. Lihat https://www.gnu.org/software/gawk/manual/html_node/Options.html#Options untuk daftar kemungkinan nilai untuk nilai.
- -bignum Memaksa aritmatika presisi arbitrer pada angka. Opsi ini tidak berpengaruh jika gawk tidak dikompilasi untuk menggunakan pustaka GNU MPFR dan GMP. (Dalam kasus seperti itu, gawk mengeluarkan peringatan.)
CATATAN: Fitur ini bersyarat. Pemelihara gawk utama tidak lagi mendukungnya, meskipun ada anggota tim pengembangan yang mendukungnya. Jika situasi ini berubah, fitur tersebut akan dihapus dari gawk.
Setel GAWK_NO_MPFR_WARN di lingkungan untuk membisukan peringatan.
- -non-decimal-data Kenali nilai oktal dan heksadesimal dalam data masukan. Gunakan opsi ini dengan sangat hati-hati!
- -use-lc-numeric Paksa gawk untuk menggunakan karakter titik desimal lokal saat mem-parsing data masukan.
- -nostalgia Berikan momen nostalgia untuk pengguna awk lama.
Keluarkan versi cetak program yang cantik ke file. File defaultnya adalah awkprof.out di direktori saat ini. Opsi ini menyiratkan - -no-optimize.
- -optimalkan Aktifkan pengoptimalan default gawk pada representasi internal program. Opsi ini aktif secara default.
Mulai sesi pembuatan profil, dan kirim data pembuatan profil ke prof-file. Standarnya adalah awkprof.out di direktori saat ini. Profil berisi jumlah eksekusi dari setiap pernyataan dalam program di margin kiri dan jumlah panggilan fungsi untuk setiap fungsi yang ditentukan pengguna. Gawk berjalan lebih lambat dalam mode ini. Opsi ini menyiratkan - -no-optimize.
- -posix Ini mengaktifkan mode kompatibilitas, dan menonaktifkan sejumlah ekstensi umum.
- -re-interval Mengaktifkan penggunaan ekspresi interval dalam pencocokan ekspresi reguler. Ekspresi interval diaktifkan secara default, tetapi opsi ini tetap untuk kompatibilitas mundur.
- -no-optimize Nonaktifkan pengoptimalan default gawk pada representasi internal program.
- -sandbox Jalankan gawk dalam mode kotak pasir, nonaktifkan fungsi system(), masukan pengalihan dengan getline, keluaran pengalihan dengan print dan printf, dan memuat ekstensi dinamis. Eksekusi perintah (melalui saluran pipa) juga dinonaktifkan.
- -lint-old Berikan peringatan tentang konstruksi yang tidak portabel untuk versi asli UNIX awk.
- -version Cetak informasi versi untuk salinan khusus gawk pada output standar. Ini berguna saat melaporkan bug. Sesuai Standar Pengodean GNU, opsi ini menyebabkan keluar dengan segera dan berhasil.
Beri tanda akhir dari opsi. Ini berguna untuk memungkinkan argumen lebih lanjut ke program AWK itu sendiri dimulai dengan "-".
Dalam mode kompatibilitas, opsi lain apa pun ditandai sebagai tidak valid, tetapi diabaikan. Dalam operasi normal, selama teks program disediakan, opsi yang tidak diketahui diteruskan ke program AWK dalam larik ARGV untuk diproses.
Untuk kompatibilitas POSIX, opsi -W dapat digunakan, diikuti dengan nama opsi yang panjang.
Program AWK terdiri dari urutan arahan opsional, pernyataan pola-aksi, dan definisi fungsi opsional.
@include "filename "
@load "filename "
@namespace "name "
pattern { action statements }
function name(parameter list) { statements }Gawk pertama membaca sumber program dari program-file(s) jika ditentukan, dari argumen ke - -source, atau dari non pertama -option argumen pada baris perintah. Opsi -f dan - -source dapat digunakan beberapa kali pada baris perintah. Gawk membaca teks program seolah-olah semua file program dan teks sumber baris perintah telah digabungkan menjadi satu.
Selain itu, baris yang diawali dengan @include dapat digunakan untuk menyertakan file sumber lain ke dalam program Anda. Ini sama dengan menggunakan opsi - -include.
Baris yang diawali dengan @load dapat digunakan untuk memuat fungsi ekstensi ke dalam program Anda. Ini sama dengan menggunakan opsi - -load.
Variabel lingkungan AWKPATH menentukan jalur pencarian untuk digunakan saat menemukan file sumber yang dinamai dengan opsi -f dan - -include. Jika variabel ini tidak ada, jalur defaultnya adalah ".:/usr/local/share/awk". (Direktori yang sebenarnya mungkin berbeda, tergantung pada bagaimana gawk dibuat dan diinstal.) Jika nama file yang diberikan ke opsi -f berisi karakter “/ ”, tidak ada jalur pencarian dilakukan.
Variabel lingkungan AWKLIBPATH menentukan jalur pencarian untuk digunakan saat menemukan file sumber yang dinamai dengan opsi - -load. Jika variabel ini tidak ada, jalur defaultnya adalah "/usr/local/lib/gawk". (Direktori yang sebenarnya mungkin berbeda, tergantung bagaimana gawk dibuat dan diinstal.)
Gawk mengeksekusi program AWK dengan urutan sebagai berikut. Pertama, semua penetapan variabel yang ditentukan melalui opsi -v akan dilakukan. Selanjutnya, gawk mengkompilasi program ke dalam bentuk internal. Kemudian, gawk mengeksekusi kode dalam aturan BEGIN (jika ada), lalu melanjutkan untuk membaca setiap file yang disebutkan dalam ARGV larik (hingga ARGV[ARGC-1]). Jika tidak ada file yang disebutkan pada baris perintah, gawk akan membaca masukan standar.
Jika nama file pada baris perintah memiliki bentuk var=val, nama tersebut diperlakukan sebagai penetapan variabel. Variabel var akan diberi nilai val. (Ini terjadi setelah aturan BEGIN dijalankan.)
Jika nilai elemen tertentu ARGV kosong (""), gawk melewatinya.
Untuk setiap file input, jika ada aturan BEGINFILE, gawk mengeksekusi kode terkait sebelum memproses konten file. Demikian pula, gawk mengeksekusi kode yang terkait dengan aturan ENDFILE setelah memproses file.
Untuk setiap catatan dalam input, gawk menguji untuk melihat apakah cocok dengan pola apa pun dalam program AWK. Untuk setiap pola yang cocok dengan record, gawk mengeksekusi action terkait. Pola diuji sesuai urutan kemunculannya dalam program.
Terakhir, setelah semua input habis, gawk mengeksekusi kode dalam aturan END (jika ada).
Menurut POSIX, file yang dinamai pada baris perintah awk harus berupa file teks. Perilaku adalah `` tidak terdefinisi'' jika tidak. Sebagian besar versi awk memperlakukan direktori pada baris perintah sebagai kesalahan fatal.
Untuk gawk, direktori pada baris perintah menghasilkan peringatan, tetapi jika tidak, akan dilewati. Jika salah satu opsi - -posix atau - -tradisional diberikan, maka gawk akan kembali memperlakukan direktori pada baris perintah sebagai kesalahan fatal .
Variabel AWK bersifat dinamis; mereka muncul saat pertama kali digunakan. Nilainya bisa berupa angka floating-point atau string, atau keduanya, tergantung bagaimana penggunaannya. Selain itu, gawk memungkinkan variabel memiliki tipe ekspresi reguler. AWK juga memiliki array satu dimensi; array dengan banyak dimensi dapat disimulasikan. Namun, gawk menyediakan larik larik yang sebenarnya. Beberapa variabel yang ditentukan sebelumnya diatur saat program berjalan; ini dijelaskan sesuai kebutuhan dan dirangkum di bawah ini.
Biasanya, catatan dipisahkan oleh karakter baris baru. Anda dapat mengontrol bagaimana rekaman dipisahkan dengan menetapkan nilai ke variabel bawaan RS. Lihat https://www.gnu.org/software/gawk/manual/html_node/Records.html untuk detailnya.
Saat setiap catatan masukan dibaca, gawk membagi catatan menjadi bidang, menggunakan nilai variabel FS sebagai pemisah bidang. Selain itu, FIELDWIDTHS dan FPAT dapat digunakan untuk mengontrol pembagian kolom masukan. Lihat detailnya, mulai dari https://www.gnu.org/software/gawk/manual/html_node/Fields.html.
Setiap bidang dalam rekaman masukan dapat direferensikan berdasarkan posisinya: $1, $2, dan seterusnya. $0 adalah keseluruhan catatan, termasuk spasi kosong di depan dan di belakang.
Variabel NF disetel ke jumlah total bidang dalam catatan masukan.
Referensi ke bidang yang tidak ada (yaitu, bidang setelah $NF) menghasilkan string nol. Namun, menetapkan ke bidang yang tidak ada (mis., $ (NF+2)=5) meningkatkan nilai NF, membuat bidang apa pun yang mengintervensi dengan null string sebagai nilainya, dan menyebabkan nilai $0 dihitung ulang, dengan bidang dipisahkan oleh nilai OFS. Referensi ke bidang bernomor negatif menyebabkan kesalahan fatal. Pengurangan NF menyebabkan nilai bidang yang melewati nilai baru hilang, dan nilai $0 dihitung ulang, dengan bidang dipisahkan oleh nilai OFS.
Menetapkan nilai ke bidang yang ada menyebabkan seluruh catatan dibuat ulang saat $0 direferensikan. Demikian pula, menetapkan nilai ke $0 menyebabkan rekaman dibagi ulang, membuat nilai baru untuk bidang.
Variabel bawaan Gawk tercantum di bawah ini. Daftar ini sengaja dibuat singkat. Untuk detailnya, lihat https://www.gnu.org/software/gawk/manual/html_node/Built_002din-Variables.
Jumlah argumen baris perintah.
Indeks dalam ARGV file saat ini sedang diproses.
Array argumen baris perintah. Larik diindeks dari 0 hingga ARGC - 1.
Pada sistem non-POSIX, tentukan penggunaan mode "biner " untuk semua file I/O. Lihat https://www.gnu.org/software/gawk/manual/html_node/PC-Using.html untuk detailnya.
Format konversi untuk angka, "%.6g", secara default.
Array yang berisi nilai lingkungan saat ini. Array diindeks oleh variabel lingkungan, setiap elemen menjadi nilai dari variabel itu.
Jika kesalahan sistem terjadi saat melakukan pengalihan untuk getline, selama membaca untuk getline, atau selama close(), maka ERRNO disetel ke string yang menjelaskan kesalahan. Nilai tunduk pada terjemahan dalam bahasa non-bahasa Inggris.
Daftar lebar bidang yang dipisahkan spasi putih. Jika disetel, gawk mem-parsing masukan ke bidang dengan lebar tetap, alih-alih menggunakan nilai variabel FS sebagai pemisah bidang. Setiap lebar bidang secara opsional dapat didahului dengan nilai yang dipisahkan titik dua yang menentukan jumlah karakter yang akan dilewati sebelum bidang dimulai.
Nama file input saat ini. Jika tidak ada file yang ditentukan pada baris perintah, nilai FILENAME adalah “- ”. Namun, FILENAME tidak ditentukan di dalam aturan BEGIN (kecuali jika ditetapkan oleh getline).
Nomor catatan input dalam file input saat ini.
Ekspresi reguler yang mendeskripsikan konten bidang dalam rekaman. Jika disetel, gawk mem-parse masukan ke dalam bidang, yang bidangnya cocok dengan ekspresi reguler, alih-alih menggunakan nilai FS sebagai pemisah bidang.
Pemisah bidang input, spasi secara default. Lihat https://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html untuk detailnya.
Array yang indeks dan nilai yang sesuai adalah nama dari semua fungsi yang ditentukan pengguna atau ekstensi dalam program. CATATAN: Anda tidak boleh menggunakan pernyataan hapus dengan larik FUNCTAB.
Mengontrol sensitivitas huruf besar-kecil dari semua ekspresi reguler dan operasi string. Lihat https://www.gnu.org/software/gawk/manual/html_node/Case_002dsensitivity.html untuk detailnya.
Menyediakan kontrol dinamis untuk opsi - -lint dari dalam program AWK.
Jumlah bidang dalam catatan input saat ini.
Jumlah total rekaman masukan yang terlihat sejauh ini.
Format keluaran untuk angka, "%.6g", secara default.
Pemisah bidang keluaran, spasi secara default.
Pemisah catatan keluaran, secara default adalah baris baru.
Presisi kerja angka floating-point presisi sewenang-wenang, 53 secara default.
Elemen array ini menyediakan akses ke informasi tentang program AWK yang sedang berjalan. Lihat https://www.gnu.org/software/gawk/manual/html_node/Auto_002dset untuk detailnya.
Mode pembulatan yang digunakan untuk aritmatika presisi arbitrer pada angka, secara default "N" (mode roundTiesToEven IEEE-754). Lihat https://www.gnu.org/software/gawk/manual/html_node/Setting-the-rounding-mode untuk detailnya.
Pemisah catatan input, secara default adalah baris baru.
Pemutusan rekor. Gawk menyetel RT ke teks masukan yang cocok dengan karakter atau ekspresi reguler yang ditentukan oleh RS.
Indeks karakter pertama cocok dengan match(); 0 jika tidak cocok.
Panjang string yang cocok dengan match(); -1 jika tidak cocok.
String yang digunakan untuk memisahkan beberapa subskrip dalam elemen larik, secara default "\034".
Array yang indeksnya adalah nama dari semua variabel dan array global yang didefinisikan saat ini dalam program. Anda tidak boleh menggunakan pernyataan hapus dengan larik SYMTAB, atau menetapkan elemen dengan indeks yang bukan nama variabel.
Domain teks dari program AWK; digunakan untuk menemukan terjemahan lokal untuk string program.
Array disubskrip dengan ekspresi di antara tanda kurung siku ([ dan ]). Jika ekspresi adalah daftar ekspresi (expr, expr . . .) maka subskrip array adalah string yang terdiri dari gabungan nilai (string) dari setiap ekspresi, dipisahkan dengan nilai variabel SUBSEP. Fasilitas ini digunakan untuk mensimulasikan array berdimensi banyak. Misalnya:
i = "A"; j = "B"; k = "C"
x[i, j, k] = "hello, world\n"
menetapkan string "hello, world\n" ke elemen array x yang diindeks oleh string "A\034B\034C" . Semua array di AWK bersifat asosiatif, yaitu diindeks oleh nilai string.
Operator khusus in dapat digunakan untuk menguji apakah suatu larik memiliki indeks yang terdiri dari nilai tertentu:
if (val in array) print array[val]
Jika larik memiliki banyak subskrip, gunakan (i, j) dalam larik.
Konstruk in juga dapat digunakan dalam loop for untuk mengulangi semua elemen array. Namun, konstruk (i, j) in array hanya berfungsi dalam pengujian, bukan dalam loop for.
Elemen dapat dihapus dari larik menggunakan pernyataan delete. Pernyataan hapus juga dapat digunakan untuk menghapus seluruh isi larik, hanya dengan menentukan nama larik tanpa subskrip.
gawk mendukung array multidimensi sejati. Itu tidak mengharuskan array seperti itu `` persegi panjang'' seperti di C atau C++. Lihat https://www.gnu.org/software/gawk/manual/html_node/Arrays untuk detailnya.
Gawk menyediakan fasilitas namespace sederhana untuk membantu mengatasi fakta bahwa semua variabel di AWK bersifat global.
Nama yang memenuhi syarat terdiri dari dua pengenal sederhana yang digabungkan dengan titik dua ganda (::). Pengidentifikasi kiri mewakili namespace dan pengidentifikasi kanan adalah variabel di dalamnya. Semua nama sederhana (tidak memenuhi syarat) dianggap berada di namespace `` saat ini''; namespace defaultnya adalah awk. Namun, pengidentifikasi sederhana yang hanya terdiri dari huruf besar dipaksa masuk ke namespace awk, meskipun namespace saat ini berbeda.
Anda mengubah namespace saat ini dengan direktif @namespace "name ".
Nama fungsi bawaan standar yang telah ditentukan tidak boleh digunakan sebagai nama namespace. Nama fungsi tambahan yang disediakan oleh gawk dapat digunakan sebagai nama ruang nama atau sebagai pengidentifikasi sederhana di ruang nama lain. Untuk detail selengkapnya, lihat https://www.gnu.org/software/gawk/manual/html_node/Namespaces.html#Namespaces.
Variabel dan bidang dapat berupa angka (floating point), atau string, atau keduanya. Mereka mungkin juga merupakan ekspresi reguler. Bagaimana nilai suatu variabel ditafsirkan tergantung pada konteksnya. Jika digunakan dalam ekspresi numerik, itu akan diperlakukan sebagai angka; jika digunakan sebagai string maka akan diperlakukan sebagai string.
Untuk memaksa variabel diperlakukan sebagai angka, tambahkan nol padanya; untuk memaksanya diperlakukan sebagai string, gabungkan dengan string nol.
Variabel yang tidak diinisialisasi memiliki nilai numerik nol dan nilai string "" (string nol, atau kosong).
Ketika string harus dikonversi menjadi angka, konversi dilakukan dengan menggunakan strtod(3). Angka dikonversi menjadi string dengan menggunakan nilai CONVFMT sebagai format string untuk sprintf(3), dengan nilai numerik variabel sebagai argumen. Namun, meskipun semua angka dalam AWK adalah floating-point, nilai integral selalu dikonversikan sebagai bilangan bulat.
Gawk melakukan perbandingan sebagai berikut: Jika dua variabel numerik, keduanya dibandingkan secara numerik. Jika satu nilai numerik dan yang lainnya memiliki nilai string yang merupakan "string numerik", maka perbandingan juga dilakukan secara numerik. Jika tidak, nilai numerik dikonversi menjadi string dan perbandingan string dilakukan. Dua string dibandingkan, tentu saja, sebagai string.
Perhatikan bahwa konstanta string, seperti "57", adalah bukan string numerik, melainkan konstanta string. Gagasan “string numerik ” hanya berlaku untuk bidang, input getline, FILENAME, elemen ARGV, elemen ENVIRON dan elemen larik yang dibuat oleh split() atau patsplit() yang berupa string numerik. Ide dasarnya adalah input pengguna, dan hanya input pengguna, yang terlihat numerik, yang harus diperlakukan seperti itu.
Anda dapat menggunakan konstanta oktal dan heksadesimal gaya-C dalam kode sumber program AWK Anda. Misalnya, nilai oktal 011 sama dengan desimal 9, dan nilai heksadesimal 0x11 sama dengan desimal 17.
Konstanta string di AWK adalah urutan karakter yang diapit di antara tanda kutip ganda (seperti "nilai"). Di dalam string, urutan pelarian tertentu dikenali, seperti di C. Lihat https://www.gnu.org/software/gawk/manual/html_node/Escape-Sequences untuk Rinciannya.
Konstanta ekspresi reguler adalah urutan karakter yang diapit di antara garis miring ke depan (seperti /nilai/).
Urutan escape yang dijelaskan dalam manual juga dapat digunakan di dalam ekspresi reguler konstan (mis., /[ \t\f\n\r\v]/ cocok dengan karakter spasi putih).
Gawk menyediakan konstanta ekspresi reguler yang diketik dengan kuat. Ini ditulis dengan simbol @ di depan (seperti: @/value/). Konstanta semacam itu dapat ditugaskan ke skalar (variabel, elemen array) dan diteruskan ke fungsi yang ditentukan pengguna. Variabel yang telah ditetapkan memiliki tipe ekspresi reguler.
AWK adalah bahasa berorientasi garis. Polanya didahulukan, baru kemudian tindakan. Pernyataan tindakan disertakan dalam { dan }. Entah polanya mungkin hilang, atau tindakannya mungkin hilang, tetapi, tentu saja, tidak keduanya. Jika polanya hilang, tindakan dijalankan untuk setiap catatan masukan. Tindakan yang hilang setara dengan
{ print }yang mencetak seluruh catatan.
Komentar dimulai dengan karakter #, dan berlanjut hingga akhir baris. Baris kosong dapat digunakan untuk memisahkan pernyataan. Biasanya, pernyataan diakhiri dengan baris baru, namun tidak demikian halnya dengan baris yang diakhiri dengan koma, {, ?, :, &&, atau ||. Baris yang diakhiri dengan do atau else juga memiliki pernyataan yang secara otomatis dilanjutkan pada baris berikutnya. Dalam kasus lain, sebuah baris dapat dilanjutkan dengan mengakhirinya dengan “\ ”, dalam hal ini baris baru diabaikan. Namun, “\ ” setelah # tidaklah istimewa.
Beberapa pernyataan dapat diletakkan pada satu baris dengan memisahkannya dengan “; ”. Ini berlaku untuk kedua pernyataan di dalam bagian tindakan dari pasangan pola-tindakan (kasus biasa), dan untuk pernyataan pola-tindakan itu sendiri.
Pola AWK mungkin salah satu dari yang berikut:
BEGIN END BEGINFILE ENDFILE /regular expression/ relational expression pattern && pattern pattern || pattern pattern ? pattern : pattern (pattern) ! pattern pattern1, pattern2
BEGIN dan END adalah dua jenis pola khusus yang tidak diuji terhadap masukan. Bagian tindakan dari semua pola BEGIN digabungkan seolah-olah semua pernyataan telah ditulis dalam satu aturan BEGIN. Mereka dieksekusi sebelum input apa pun dibaca. Demikian pula, semua aturan END digabungkan, dan dieksekusi saat semua input habis (atau saat pernyataan exit dieksekusi). Pola BEGIN dan END tidak dapat digabungkan dengan pola lain dalam ekspresi pola. Pola BEGIN dan END tidak boleh ada bagian tindakan yang hilang.
BEGINFILE dan ENDFILE adalah pola khusus tambahan yang tindakannya dijalankan sebelum membaca rekaman pertama dari setiap file input baris perintah dan setelah membaca rekaman terakhir dari setiap file. Di dalam aturan BEGINFILE, nilai ERRNO adalah string kosong jika file berhasil dibuka. Jika tidak, ada beberapa masalah dengan file dan kode harus menggunakan berikutnya untuk melewatinya. Jika itu tidak dilakukan, gawk menghasilkan kesalahan fatal seperti biasa untuk file yang tidak dapat dibuka.
Untuk pola /ekspresi reguler/, pernyataan terkait dijalankan untuk setiap catatan input yang cocok dengan ekspresi reguler. Ekspresi reguler pada dasarnya sama dengan egrep(1). Lihat https://www.gnu.org/software/gawk/manual/html_node/Regexp.html untuk detail tentang ekspresi reguler.
Ekspresi relasional dapat menggunakan salah satu operator yang ditentukan di bawah di bagian tindakan. Ini umumnya menguji apakah bidang tertentu cocok dengan ekspresi reguler tertentu.
Operator &&, ||, dan ! adalah logika AND, logika OR, dan logika NOT, seperti pada C. Mereka melakukan short -circuit evaluasi, juga seperti dalam C, dan digunakan untuk menggabungkan ekspresi pola yang lebih primitif. Seperti dalam kebanyakan bahasa, tanda kurung dapat digunakan untuk mengubah urutan evaluasi.
Bentuk ekspresi pattern1, pattern2 disebut pola rentang. Itu cocok dengan semua catatan input dimulai dengan catatan yang cocok dengan pattern1, dan berlanjut hingga catatan yang cocok dengan pattern2, inklusif. Itu tidak digabungkan dengan jenis ekspresi pola lainnya.
Pernyataan tindakan diapit oleh tanda kurung, { dan }. Pernyataan tindakan terdiri dari pernyataan penugasan, kondisional, dan perulangan yang biasa ditemukan di sebagian besar bahasa. Operator, pernyataan kontrol, dan pernyataan masukan/keluaran yang tersedia berpola setelah yang ada di C.
Operator di AWK, dalam urutan penurunan prioritas, adalah:
Pengelompokan
Referensi lapangan.
Kenaikan dan penurunan, baik awalan maupun akhiran.
Eksponensial.
Unary plus, unary minus, dan negasi logis.
Perkalian, pembagian, dan modulus.
Penambahan dan pengurangan.
Penggabungan string.
I/O disalurkan untuk getline, print, dan printf.
Operator relasional reguler.
Pencocokan ekspresi reguler, pencocokan negasi.
Keanggotaan larik.
Logis DAN.
Logis ATAU.
Ekspresi kondisional C. Ini berbentuk expr1 ? expr2 : expr3 . Jika expr1 benar, nilai ekspresinya adalah expr2, jika tidak maka expr3. Hanya satu dari expr2 dan expr3 yang dievaluasi.
Penugasan. Penetapan mutlak (var=nilai) dan penetapan operator (yang lainnya formulir) didukung.
Pernyataan kontrol adalah sebagai berikut:
if (condition) statement [ else statement ] while (condition) statement do statement while (condition) for (expr1; expr2; expr3) statement for (var in array) statement break continue delete array [ index ] delete array exit [ expression ] { statements } switch (expression) { case value|regex : statement . . . [ default: statement ] }
Pernyataan input/output adalah sebagai berikut:
Tutup file, pipa, atau koproses yang terbuka. cara opsional sebaiknya hanya digunakan saat menutup salah satu ujung pipa dua arah ke proses koproses. Itu harus berupa nilai string, baik "to" atau "from".
Tetapkan $0 dari rekaman masukan berikutnya; setel NF, NR, FNR, RT.
Tetapkan $0 dari rekaman file berikutnya; setel NF, RT.
Tetapkan var dari catatan input berikutnya; atur NR, FNR, RT.
Tetapkan var dari rekaman file berikutnya; setel RT.
Jalankan command, salurkan hasilnya ke $0 atau var, seperti di atas, dan RT.
Jalankan command sebagai koproses yang menyalurkan output ke $0 atau var, seperti di atas, dan RT. (Perintah juga bisa berupa soket. Lihat subbagian Nama Berkas Khusus, di bawah.)
Hapus semua buffer yang terkait dengan file keluaran terbuka atau file pipa. Jika file hilang atau jika itu adalah string nol, maka bersihkan semua file dan pipa keluaran yang terbuka.
Hentikan pemrosesan rekaman input saat ini. Baca catatan input berikutnya dan mulai memproses dengan pola pertama dalam program AWK. Setelah mencapai akhir input data, jalankan aturan END apa saja.
Berhenti memproses file input saat ini. Pembacaan record input berikutnya berasal dari file input berikutnya. Perbarui FILENAME dan ARGIND, setel ulang FNR ke 1, dan mulai proses ulang dengan pola pertama dalam program AWK. Setelah mencapai akhir input data, jalankan aturan ENDFILE dan END apa pun.
Cetak catatan saat ini. Catatan keluaran diakhiri dengan nilai ORS.
Cetak ekspresi. Setiap ekspresi dipisahkan dengan nilai OFS. Catatan keluaran diakhiri dengan nilai ORS.
Cetak ekspresi pada file. Setiap ekspresi dipisahkan dengan nilai OFS. Catatan keluaran diakhiri dengan nilai ORS.
Format dan cetak.
Format dan cetak di file.
Jalankan perintah cmd-line, dan kembalikan status keluar. (Ini mungkin tidak tersedia pada sistem non-POSIX.) Lihat https://www.gnu.org/software/gawk/manual/html_node/I_002fO-Functions.html#I_002fO-Functions untuk detail lengkap tentang status keluar.
Pengalihan output tambahan diperbolehkan untuk print dan printf.
Tambahkan output ke file.
Tulis di pipa.
Kirim data ke koproses atau soket. (Lihat juga subbagian Nama Berkas Khusus, di bawah.)
Perintah getline mengembalikan 1 jika berhasil, nol di akhir file, dan -1 jika error. Jika nilai errno(3) menunjukkan bahwa operasi I/O dapat dicoba ulang, dan PROCINFO["input ", " RETRY"] disetel, lalu -2 dikembalikan sebagai ganti -1, dan panggilan lebih lanjut ke getline dapat dilakukan. Saat terjadi kesalahan, ERRNO diatur ke string yang menjelaskan masalah.
CATATAN: Kegagalan dalam membuka soket dua arah menyebabkan kesalahan non-fatal dikembalikan ke fungsi pemanggilan. Jika menggunakan pipa, koproses, atau soket ke getline, atau dari print atau printf dalam satu lingkaran, Anda harus gunakan close() untuk membuat instance baru dari perintah atau soket. AWK tidak secara otomatis menutup pipa, soket, atau koproses saat mengembalikan EOF.
Versi AWK dari pernyataan printf dan fungsi sprintf() mirip dengan C. Untuk detailnya, lihat https://www.gnu.org/ software/gawk/manual/html_node/Printf.html.
Saat melakukan pengalihan I/O dari print atau printf ke dalam file, atau melalui getline dari file, gawk mengenali nama file khusus tertentu secara internal. Nama file ini memungkinkan akses untuk membuka deskriptor file yang diwarisi dari proses induk gawk (biasanya shell). Nama file ini juga dapat digunakan pada baris perintah untuk menamai file data. Nama filenya adalah:
Masukan standar.
Masukan standar.
Keluaran standar.
Keluaran kesalahan standar.
File yang terkait dengan deskriptor file terbuka n.
Nama file khusus berikut dapat digunakan dengan operator koproses |& untuk membuat koneksi jaringan TCP/IP:
/inet/tcp/lport/rhost/rport /inet4/tcp/lport/rhost/rport /inet6/tcp/lport/rhost/rport
File untuk koneksi TCP/IP pada port lokal lport ke host jarak jauh rhost pada port jarak jauh rport. Gunakan port 0 agar sistem memilih port. Gunakan /inet4 untuk memaksa koneksi IPv4, dan /inet6 untuk memaksa koneksi IPv6. Biasa /inet menggunakan default sistem (kemungkinan besar IPv4). Hanya dapat digunakan dengan operator I/O dua arah |&.
/inet/udp/lport/rhost/rport /inet4/udp/lport/rhost/rport /inet6/udp/lport/rhost/rport
Serupa, tetapi gunakan UDP/IP, bukan TCP/IP.
AWK memiliki fungsi aritmatika bawaan berikut:
Kembalikan arctangent dari y/x dalam radian.
Kembalikan kosinus expr, yang dalam radian.
Fungsi eksponensial.
Potong menjadi bilangan bulat.
Potong num dan denom menjadi bilangan bulat. Kembalikan hasil bagi dari bil dibagi dengan denom di hasil["hasil bagi"] dan sisanya di hasil["sisa"]. Ini adalah ekstensi gawk, terutama bernilai saat bekerja dengan bilangan bulat besar yang berubah-ubah.
Fungsi logaritma natural.
Kembalikan angka acak N, antara nol dan satu, sehingga 0 ≤ N < 1.
Kembalikan sinus expr, yang dalam radian.
Kembalikan akar kuadrat dari expr.
Gunakan expr sebagai bibit baru untuk penghasil angka acak. Jika tidak ada expr yang disediakan, gunakan waktu. Kembalikan seed sebelumnya untuk generator angka acak.
Gawk memiliki fungsi string bawaan berikut; detail disediakan di https://www.gnu.org/software/gawk/manual/html_node/String-Functions.
Mengembalikan jumlah elemen dalam larik sumber s. Urutkan isi s menggunakan aturan normal gawk untuk membandingkan nilai, dan ganti indeks dari nilai yang diurutkan s dengan bilangan bulat berurutan yang dimulai dengan 1. Jika array tujuan opsional d ditentukan, duplikat s menjadi d terlebih dahulu, lalu urutkan d, membiarkan indeks array sumber s tidak berubah. String opsional how mengontrol arah dan mode perbandingan. Nilai yang valid untuk bagaimana dijelaskan di https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions. s dan d diizinkan untuk menjadi larik yang sama; ini hanya masuk akal saat memberikan argumen ketiga juga.
Mengembalikan jumlah elemen dalam larik sumber s. Perilakunya sama dengan asort(), kecuali bahwa indeks larik digunakan untuk menyortir, bukan nilai larik. Setelah selesai, array diindeks secara numerik, dan nilainya sesuai dengan indeks aslinya. Nilai aslinya hilang; jadi berikan larik kedua jika Anda ingin mempertahankan yang asli. Tujuan string opsional how sama dengan asort(). Di sini juga, s dan d diizinkan untuk menjadi larik yang sama; ini hanya masuk akal saat memberikan argumen ketiga juga.
Telusuri string target t untuk kecocokan ekspresi reguler r. Jika h adalah string yang dimulai dengan g atau G, ganti semua kecocokan r dengan s . Jika tidak, h adalah angka yang menunjukkan kecocokan r mana yang akan diganti. Jika t tidak disediakan, gunakan $0 sebagai gantinya. Di dalam teks pengganti s, urutan \n, dengan n adalah angka dari 1 sampai 9, mungkin digunakan untuk menunjukkan hanya teks yang cocok dengan subekspresi tanda kurung n'. Urutan \0 mewakili seluruh teks yang cocok, seperti halnya karakter &. Tidak seperti sub() dan gsub(), string yang dimodifikasi dikembalikan sebagai hasil dari fungsi, dan string target asli tidak diubah .
Untuk setiap substring yang cocok dengan ekspresi reguler r dalam string t, gantikan string s, dan kembalikan jumlah substitusi. Jika t tidak tersedia, gunakan $0. Tanda & di teks pengganti diganti dengan teks yang benar-benar cocok. Gunakan \& untuk mendapatkan literal &. (Ini harus diketik sebagai "\\&"; lihat https://www.gnu.org/software/gawk/manual/html_node/Gory-Details.html#Gory-Details untuk diskusi lebih lengkap tentang aturan ampersand dan backslash dalam teks pengganti sub(), gsub(), dan gensub().)
Kembalikan indeks string t dalam string s, atau nol jika t tidak ada. (Ini menyiratkan bahwa indeks karakter dimulai dari satu.)
Kembalikan panjang string s, atau panjang $0 jika s tidak disertakan. Dengan argumen larik, length() mengembalikan jumlah elemen dalam larik.
Kembalikan posisi di s tempat munculnya ekspresi reguler r, atau nol jika r tidak ada, dan setel nilai RSTART dan RLENGTH. Perhatikan bahwa urutan argumennya sama dengan operator ~: str ~ re.
Lihat https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html#String-Functions untuk penjelasan tentang bagaimana larik a diisi jika disediakan.
Pisahkan string s ke dalam larik a dan larik pemisah seps pada ekspresi reguler r, dan kembalikan jumlah bidang. Nilai elemen adalah bagian dari s yang cocok dengan r. Nilai seps[i] adalah kemungkinan pemisah nol yang muncul setelah a[i]. Nilai seps[0] adalah kemungkinan pemisah awal nol. Jika r dihilangkan, FPAT digunakan sebagai gantinya. Array a dan seps dibersihkan terlebih dahulu. Pemisahan berperilaku identik dengan pemisahan bidang dengan FPAT.
Pisahkan string s ke dalam larik a dan larik pemisah seps pada ekspresi reguler r, dan kembalikan jumlah bidang. Jika r dihilangkan, FS digunakan sebagai gantinya. Array a dan seps dibersihkan terlebih dahulu. seps[i] adalah pemisah bidang yang cocok dengan r antara a[<i] dan a[i+1]. Pemisahan berperilaku identik dengan pemisahan bidang .
Cetak expr-list menurut fmt, dan kembalikan string yang dihasilkan.
Periksa str, dan kembalikan nilai numeriknya. Jika str dimulai dengan awalan 0, perlakukan sebagai bilangan oktal. Jika str diawali dengan awalan 0x atau 0X, perlakukan sebagai angka heksadesimal. Jika tidak, anggap itu adalah angka desimal.
Sama seperti gsub(), tetapi hanya ganti substring pertama yang cocok. Kembalikan nol atau satu.
Kembalikan paling banyak n-substring karakter dari s mulai dari i. Jika n dihilangkan, gunakan sisa s.
Kembalikan salinan string str, dengan semua karakter huruf besar di str diterjemahkan ke huruf kecil yang sesuai. Karakter non-abjad dibiarkan tidak berubah.
Kembalikan salinan string str, dengan semua karakter huruf kecil di str diterjemahkan ke huruf besar yang sesuai. Karakter non-abjad dibiarkan tidak berubah.
Gawk sadar multibyte. Ini berarti bahwa index(), length(), substr() dan match() semuanya berfungsi dalam istilah karakter, bukan byte.
Gawk menyediakan fungsi berikut untuk mendapatkan stempel waktu dan memformatnya. Detail tersedia di https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.
Ubah datespec menjadi stempel waktu dengan bentuk yang sama seperti yang dikembalikan oleh systime(), dan kembalikan hasilnya. Jika utc-flag ada dan bukan nol atau bukan nol, waktu diasumsikan dalam zona waktu UTC; jika tidak, waktu dianggap berada dalam zona waktu lokal. Jika datespec tidak berisi elemen yang cukup atau jika waktu yang dihasilkan di luar jangkauan, mktime() mengembalikan -1. Lihat https://www.gnu.org/software/gawk/manual/html_node/Time-Functions.html#Time-Functions untuk detail tentang datespec.
Format timestamp sesuai dengan spesifikasi di format. Jika utc-flag ada dan bukan nol atau bukan nol, hasilnya dalam UTC, jika tidak hasilnya dalam waktu lokal. stempel waktu harus dalam bentuk yang sama seperti yang dikembalikan oleh systime(). Jika stempel waktu tidak ada, waktu hari ini akan digunakan. Jika format tidak ada, format default yang setara dengan output date(1) digunakan. Format default tersedia dalam PROCINFO["strftime"]. Lihat spesifikasi fungsi strftime() di ISO C untuk konversi format yang dijamin tersedia.
Mengembalikan waktu hari ini sebagai jumlah detik sejak Zaman (1970-01-01 00:00:00 UTC pada sistem POSIX).
Gawk menyediakan fungsi manipulasi bit berikut. Mereka bekerja dengan mengonversi nilai floating point presisi ganda menjadi bilangan bulat uintmax_t, melakukan operasi, lalu mengonversi hasilnya kembali ke floating point. Melewati operan negatif ke salah satu fungsi ini menyebabkan kesalahan fatal.
Fungsinya adalah:
Kembalikan bitwise AND dari nilai yang diberikan dalam daftar argumen. Setidaknya harus ada dua.
Kembalikan komplemen bitwise dari val.
Mengembalikan nilai val, digeser ke kiri sebesar count bit.
Kembalikan bitwise OR dari nilai yang diberikan dalam daftar argumen. Setidaknya harus ada dua.
Mengembalikan nilai val, digeser ke kanan sebesar count bit.
Kembalikan XOR bitwise dari nilai yang diberikan dalam daftar argumen. Setidaknya harus ada dua.
Fungsi berikut memberikan informasi terkait tipe tentang argumennya.
Kembalikan benar jika x adalah larik, salah jika sebaliknya.
Kembalikan string yang menunjukkan jenis x. String akan menjadi salah satu dari "array", "angka", "regexp", "string", "strnum", "tidak ditetapkan", atau "tidak ditentukan".
Fungsi berikut dapat digunakan dari dalam program AWK Anda untuk menerjemahkan string saat dijalankan. Untuk detail selengkapnya, lihat https://www.gnu.org/software/gawk/manual/html_node/I18N-Functions.html#I18N-Functions.
Tentukan direktori tempat gawk mencari file .gmo, seandainya file tersebut tidak akan atau tidak dapat ditempatkan di lokasi ``standar''. Ia mengembalikan direktori tempat domain ``terikat.''
domain default adalah nilai TEXTDOMAIN. Jika direktori adalah string nol (""), maka bindtextdomain() mengembalikan pengikatan saat ini untuk domain yang diberikan .
Kembalikan terjemahan string dalam domain teks domain untuk kategori lokal kategori. Nilai default untuk domain adalah nilai TEXTDOMAIN saat ini. Nilai default untuk kategori adalah "LC_MESSAGES".
Kembalikan bentuk jamak yang digunakan untuk nomor dari terjemahan string1 dan string2 di domain teks domain untuk kategori lokal <kategori. Nilai default untuk domain adalah nilai TEXTDOMAIN saat ini. Nilai default untuk kategori adalah "LC_MESSAGES".
Anda dapat membuat nilai bertipe Boolean khusus; lihat manual untuk cara kerjanya dan mengapa mereka ada.
Berdasarkan nilai boolean ekspresi kembalikan nilai benar atau salah. Nilai sebenarnya memiliki nilai numerik satu. Nilai palsu memiliki nilai numerik nol.
Fungsi dalam AWK didefinisikan sebagai berikut:
fungsi nama(daftar parameter) { pernyataan }
Fungsi dijalankan ketika mereka dipanggil dari dalam ekspresi baik dalam pola atau tindakan. Parameter aktual yang disediakan dalam pemanggilan fungsi digunakan untuk memberi contoh parameter formal yang dideklarasikan dalam fungsi. Array dilewatkan dengan referensi, variabel lain dilewatkan dengan nilai.
Variabel lokal dideklarasikan sebagai parameter tambahan dalam daftar parameter. Konvensinya adalah untuk memisahkan variabel lokal dari parameter nyata dengan spasi ekstra dalam daftar parameter. Misalnya:
function f(p, q, a, b) # a and b are local { . . . } /abc/ { . . . ; f(1, 2) ; . . . }
Tanda kurung kiri dalam pemanggilan fungsi diperlukan untuk segera mengikuti nama fungsi, tanpa spasi kosong. Pembatasan ini tidak berlaku untuk fungsi bawaan yang tercantum di atas.
Fungsi dapat memanggil satu sama lain dan mungkin rekursif. Parameter fungsi yang digunakan sebagai variabel lokal diinisialisasi ke string nol dan angka nol setelah pemanggilan fungsi.
Gunakan return expr untuk mengembalikan nilai dari suatu fungsi. Nilai pengembalian tidak terdefinisi jika tidak ada nilai yang diberikan, atau jika fungsi dikembalikan dengan "jatuh" di akhir.
Fungsi dapat dipanggil secara tidak langsung. Untuk melakukan ini, tetapkan nama fungsi yang akan dipanggil, sebagai string, ke sebuah variabel. Kemudian gunakan variabel seolah-olah itu adalah nama fungsi, diawali dengan tanda @, seperti:
function myfunc() { print "myfunc called" . . . } { . . . the_func = "myfunc" @the_func() # call through the_func to myfunc . . . }
Jika - -lint telah disediakan, gawk memperingatkan tentang panggilan ke fungsi yang tidak ditentukan pada waktu parse, bukan pada waktu proses. Memanggil fungsi yang tidak ditentukan saat dijalankan adalah kesalahan fatal.
Anda dapat secara dinamis menambahkan fungsi baru yang ditulis dalam C atau C++ ke penafsir gawk yang sedang berjalan dengan pernyataan @load. Detail lengkap berada di luar cakupan halaman manual ini; lihat https://www.gnu.org/software/gawk/manual/html_node/Dynamic-Extensions.html#Dynamic-Extensions.
Profiler gawk menerima dua sinyal. SIGUSR1 menyebabkannya membuang tumpukan panggilan profil dan fungsi ke file profil, yaitu awkprof.out, atau file apa pun yang dinamai dengan - -profile opsi. Itu kemudian terus berjalan. SIGHUP menyebabkan gawk membuang tumpukan panggilan profil dan fungsi lalu keluar.
Konstanta string adalah urutan karakter yang diapit tanda kutip ganda. Di lingkungan yang tidak berbahasa Inggris, dimungkinkan untuk menandai string dalam program AWK sebagai membutuhkan terjemahan ke bahasa alami lokal. String tersebut ditandai dalam program AWK dengan garis bawah ("_"). Misalnya,
gawk 'BEGIN { print "hello, world" }'selalu mencetak halo, dunia. Tetapi,
gawk 'BEGIN { print _"hello, world" }'mungkin mencetak bonjour, monde di Prancis. Lihat https://www.gnu.org/software/gawk/manual/html_node/Internationalization.html#Internationalization untuk mengetahui langkah-langkah dalam memproduksi dan menjalankan program AWK yang dapat dilokalkan.
Gawk memiliki jumlah ekstensi yang terlalu besar untuk POSIX awk. Mereka dijelaskan di https://www.gnu.org/software/gawk/manual/html_node/POSIX_002fGNU.html. Semua ekstensi dapat dinonaktifkan dengan mengaktifkan gawk dengan opsi - -traditional atau - -posix.
Variabel lingkungan AWKPATH dapat digunakan untuk menyediakan daftar direktori yang dicari gawk saat mencari file yang dinamai melalui -f, - -file, opsi -i dan - -include, dan direktif @include. Jika pencarian awal gagal, jalur dicari lagi setelah menambahkan .awk ke nama file.
Variabel lingkungan AWKLIBPATH dapat digunakan untuk menyediakan daftar direktori yang dicari oleh gawk saat mencari file yang dinamai melalui -l dan opsi - -load.
Variabel lingkungan GAWK_PERSIST_FILE, jika ada, menentukan file untuk digunakan sebagai penyimpanan cadangan untuk memori persisten. Ini adalah fitur eksperimental. Lihat GAWK: Pemrograman AWK yang Efektif untuk detailnya.
Variabel lingkungan GAWK_READ_TIMEOUT dapat digunakan untuk menentukan batas waktu dalam milidetik untuk membaca input dari terminal, pipa, atau komunikasi dua arah termasuk soket.
Untuk koneksi ke host jarak jauh melalui soket, GAWK_SOCK_RETRIES mengontrol jumlah percobaan ulang, dan GAWK_MSEC_SLEEP interval antar percobaan ulang. Intervalnya dalam milidetik. Pada sistem yang tidak mendukung usleep(3), nilainya dibulatkan ke atas menjadi bilangan integral detik.
Jika POSIXLY_CORRECT ada di lingkungan, maka gawk berperilaku persis seperti jika - -posix telah ditentukan pada baris perintah. Jika - -lint telah ditentukan, gawk mengeluarkan pesan peringatan untuk efek ini.
Setel GAWK_NO_MPFR_WARN di lingkungan untuk membisukan peringatan tentang mode MPFR yang tidak digunakan lagi.
Jika pernyataan exit digunakan dengan sebuah nilai, maka gawk keluar dengan nilai numerik yang diberikan padanya.
Sebaliknya, jika tidak ada masalah selama eksekusi, gawk keluar dengan nilai konstanta C EXIT_SUCCESS. Ini biasanya nol.
Jika terjadi kesalahan, gawk keluar dengan nilai konstanta C EXIT_FAILURE. Ini biasanya satu.
Jika gawk keluar karena kesalahan fatal, status keluarnya adalah 2. Pada sistem non-POSIX, nilai ini mungkin dipetakan ke EXIT_FAILURE.
Halaman manual ini mendokumentasikan gawk, versi 5.2.
Versi asli UNIX awk dirancang dan diimplementasikan oleh Alfred Aho, Peter Weinberger, dan Brian Kernighan dari Bell Laboratories. Brian Kernighan terus memelihara dan menyempurnakannya.
Paul Rubin dan Jay Fenlason, dari Free Software Foundation, menulis gawk, agar kompatibel dengan versi asli awk yang didistribusikan di UNIX Edisi Ketujuh. John Woods menyumbangkan sejumlah perbaikan bug. David Trueman, dengan kontribusi dari Arnold Robbins, membuat gawk kompatibel dengan versi baru UNIX awk. Arnold Robbins adalah pengelola saat ini.
Lihat GAWK: Pemrograman AWK yang Efektif untuk daftar lengkap kontributor gawk dan dokumentasinya.
Lihat file README di distribusi gawk untuk informasi terkini tentang pengelola dan port mana yang saat ini didukung.
Jika Anda menemukan bug di gawk, silakan gunakan program gawkbug(1) untuk melaporkannya.
Petunjuk lengkap untuk melaporkan bug tersedia di https://www.gnu.org/software/gawk/manual/html_node/Bugs.html. Harap baca dengan cermat dan ikuti instruksi yang diberikan di sana. Ini akan membuat pelaporan dan penyelesaian bug jauh lebih mudah bagi semua orang yang terlibat. Benar-benar.
Opsi -F tidak diperlukan mengingat fitur penugasan variabel baris perintah; tetap hanya untuk kompatibilitas mundur.
Halaman manual ini terlalu panjang; gawk memiliki terlalu banyak fitur.
egrep(1), sed(1), gawkbug(1), printf(3), and strftime(3).
The AWK Programming Language, Alfred V. Aho, Brian W. Kernighan, Peter J. Weinberger, Addison-Wesley, 1988. ISBN 0-201-07981-X.
GAWK: Effective AWK Programming, Edition 5.2, shipped with the gawk source. The current version of this document is available online at https://www.gnu.org/software/gawk/manual.
The GNU gettext documentation, available online at https://www.gnu.org/software/gettext.
Print and sort the login names of all users:
BEGIN { FS = ":" }
{ print $1 | "sort" }
Count lines in a file:
{ nlines++ }
END { print nlines }
Precede each line by its number in the file:
{ print FNR, $0 }
Concatenate and line number (a variation on a theme):
{ print NR, $0 }
Run an external command for particular lines of data:
tail -f access_log |
awk '/myhome.html/ { system("nmap " $1 ">> logdir/myhome.html") }'Brian Kernighan memberikan bantuan berharga selama pengujian dan debugging. Kami berterima kasih padanya.
Hak Cipta © 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005, 2007, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Free Software Foundation, Inc.
Izin diberikan untuk membuat dan mendistribusikan salinan kata demi kata dari halaman buku panduan ini asalkan pemberitahuan hak cipta dan pemberitahuan izin ini dipertahankan pada semua salinan.
Izin diberikan untuk memproses file ini melalui troff dan mencetak hasilnya, asalkan dokumen yang dicetak membawa pemberitahuan izin penyalinan yang identik dengan yang satu ini kecuali untuk penghapusan paragraf ini (paragraf ini tidak relevan dengan halaman manual cetak).
Izin diberikan untuk menyalin dan mendistribusikan versi modifikasi dari halaman buku panduan ini di bawah ketentuan untuk penyalinan verbatim, asalkan seluruh karya turunan yang dihasilkan didistribusikan di bawah ketentuan pemberitahuan izin yang identik dengan yang satu ini.
Izin diberikan untuk menyalin dan mendistribusikan terjemahan dari halaman panduan ini ke dalam bahasa lain, di bawah ketentuan di atas untuk versi yang dimodifikasi, kecuali pemberitahuan izin ini dapat dinyatakan dalam terjemahan yang disetujui oleh Yayasan.