Belajar Command Linux - gawk

Nama

bahasa gawang - pengimbasan pola dan bahasa pemprosesan

Sinopsis

gawk [POSIX atau pilihan gaya GNU] -f program-file [ - ] fail ...
gawk [POSIX atau pilihan gaya GNU] [ - ] fail teks ...

pgawk [POSIX atau pilihan gaya GNU] -f program-file [ - ] fail ...
pgawk [POSIX atau pilihan gaya GNU] [ - ] fail teks ...

Penerangan

Gawk adalah pelaksanaan Projek GNU dalam bahasa pemrograman AWK. Ia mematuhi definisi bahasa dalam POSIX 1003.2 Standard Perintah Bahasa dan Utiliti. Versi ini pula adalah berdasarkan perihalan dalam Bahasa Pemrograman AWK , oleh Aho, Kernighan, dan Weinberger, dengan ciri-ciri tambahan yang terdapat di versi Sistem V Release 4 UNIX. Gawk juga menyediakan sambungan makmal Bell Laboratories yang lebih baru, dan beberapa pelanjutan khusus GNU.

Pawk adalah versi pandang keren . Ia sama dalam semua cara untuk membuat gawat , kecuali bahawa program berjalan lebih perlahan, dan secara automatik menghasilkan profil pelaksanaan dalam awkprof.out file apabila selesai. Lihat pilihan --profil , di bawah.

Barisan arahan terdiri daripada pilihan untuk membuat sendiri, teks program AWK (jika tidak dibekalkan melalui pilihan -f atau - fail fail ), dan nilai yang akan disediakan dalam pembolehubah AWK yang telah ditentukan oleh ARGC dan ARGV .

Format Pilihan

Pilihan Gawk mungkin sama ada opsyen POSIX tradisional satu huruf, atau pilihan panjang gaya GNU. Pilihan POSIX bermula dengan `` - '' tunggal, manakala pilihan yang panjang bermula dengan `` - ''. Pilihan panjang disediakan untuk kedua-dua ciri khusus GNU dan untuk ciri-ciri yang diamanahkan POSIX.

Berikutan piawaian POSIX, pilihan khusus gawat dibekalkan melalui argumen kepada pilihan -W . Pelbagai pilihan -W boleh dibekalkan Setiap pilihan -W mempunyai pilihan yang sama seperti yang dinyatakan di bawah. Argumen kepada pilihan yang lama sama ada dengan pilihan dengan tanda = tanda, tanpa ruang yang campur tangan, atau mereka mungkin diberikan dalam hujah baris perintah seterusnya. Pilihan panjang boleh disingkat, selagi singkatan tetap unik.

Pilihan

Gawk menerima pilihan berikut, disenaraikan secara abjad.

-F fs

- pemisah lapangan fs Gunakan fs untuk pemisah medan input (nilai pembolehubah yang telah ditetapkan oleh FS ).

-v var = val

--assign var = val Tentukan nilai val kepada variable var , sebelum pelaksanaan program bermula. Nilai pembolehubah sedemikian boleh didapati untuk blok BEGIN dari program AWK.

-f program-file

- Fail program fail Baca sumber program AWK dari file -file file , bukannya dari argumen baris perintah pertama. Pelbagai pilihan -f (atau - fail ) boleh digunakan.

-mf NNN

-mr NNN Tetapkan pelbagai had memori kepada nilai NNN . Bendera f menetapkan bilangan medan maksimum, dan bendera r menetapkan saiz rekod maksimum. Kedua-dua bendera dan pilihan -m adalah daripada versi penyelidikan Bell Laboratories UNIX . Mereka diabaikan oleh gawk , kerana tidak mempunyai batas yang telah ditetapkan sebelumnya.

-W compat

-W tradisional

- koma

- Run dalam mod keserasian . Dalam mod keserasian, gawk berkelakuan sama dengan UNIX ; tiada pelanjutan khusus GNU diiktiraf. Penggunaan --traditional lebih disukai daripada bentuk lain pilihan ini. Lihat GNU EXTENSIONS , di bawah, untuk maklumat lanjut.

-W copyleft

-W hak cipta

- copyleft

--Pengarang cetak Versi pendek mesej maklumat hak cipta GNU pada output standard dan keluar dengan jayanya.

-W pembolehubah dump [ = fail ]

--dump-variables [ = file ] Cetak senarai disusun pembolehubah global, jenis dan nilai akhir untuk fail . Jika tiada fail disediakan, gawk menggunakan fail bernama awkvars.out dalam direktori semasa.

Mempunyai senarai semua pembolehubah global adalah cara yang baik untuk mencari kesilapan tipografi dalam program anda. Anda juga akan menggunakan pilihan ini jika anda mempunyai program besar dengan banyak fungsi, dan anda ingin memastikan bahawa fungsi anda tidak sengaja menggunakan pembolehubah global yang anda maksudkan untuk menjadi tempatan. (Ini adalah kesilapan yang sangat mudah untuk dibuat dengan nama pemboleh ubah yang mudah seperti i , j , dan sebagainya.)

-W membantu

-W penggunaan

- membantu

--Muat cetak ringkasan ringkas mengenai pilihan yang ada pada output piawai. (Mengikut Piawaian Pengekodan GNU , pilihan ini menyebabkan keluar segera, berjaya.)

-W lint [ = maut ]

--lint [ = maut ] Berikan amaran tentang pembinaan yang diragui atau tidak mudah alih ke pelaksanaan lainAWK. Dengan hujah pilihan yang membawa maut , amaran serum menjadi kesalahan maut. Ini mungkin drastik, tetapi penggunaannya tentu akan menggalakkan pembangunan program AWK bersih.

-W lama-lama

--lint-old Memberi amaran tentang pembinaan yang tidak mudah alih kepada versi asal Unix.

-W gen-po

--gen-po Mengimbas dan mengurai program AWK, dan menghasilkan fail format GNU .po pada output standard dengan entri untuk semua rentetan setempat dalam program. Program itu sendiri tidak dilaksanakan. Lihat pengagihan gettext GNU untuk maklumat lanjut mengenai fail .po .

-W data bukan perpuluhan

- data taksebut perpuluhan Mengiktiraf nilai-nilai okta dan heksadesimal dalam data input. Gunakan pilihan ini dengan berhati-hati!

-W posix

- lampiran Ini mengubah mod keserasian , dengan sekatan tambahan berikut:

*

\ x melarikan jujukan tidak diiktiraf.

*

Hanya ruang dan tab bertindak sebagai pemisah bidang apabila FS ditetapkan ke ruang tunggal, garis baru tidak.

*

Anda tidak boleh teruskan baris selepas itu ? dan :.

*

Fungsi sinonim untuk fungsi kata kunci tidak dikenali.

*

Operator ** dan ** = tidak boleh digunakan di tempat ^ dan ^ = .

*

Fungsi fflush () tidak tersedia.

-W profil [ = prof_file ]

--profile [ = prof_file ] Mengirim data profiling ke prof_file . Lalai adalah awkprof.out . Apabila berjalan dengan gawk , profil itu hanya versi program `` cukup dicetak ''. Apabila dijalankan dengan pgawk , profil mengandungi count eksekusi setiap pernyataan dalam program di margin sebelah kiri dan fungsi bilangan panggilan untuk setiap fungsi yang ditetapkan pengguna.

-W selang semula

--re-interval Mengaktifkan penggunaan ungkapan interval dalam padanan ungkapan biasa (lihat Ungkapan Biasa , di bawah). Ungkapan interval tidak boleh didapati secara tradisional dalam bahasa AWK. Standard POSIX menambah mereka, untuk membuat awk dan egrep selaras dengan satu sama lain. Walau bagaimanapun, penggunaannya mungkin memecah program AWK yang lama, jadi hanya memberi mereka jika mereka diminta dengan pilihan ini, atau ketika - pustaka ditetapkan.

-W sumber program teks

- teks program sumber Gunakan teks program sebagai sumber kod program AWK. Opsyen ini membolehkan fungsi perpustakaan yang mudah digabungkan (digunakan melalui pilihan -f dan - fail fail ) dengan kod sumber yang dimasukkan pada baris arahan. Ia bertujuan terutamanya untuk program AWK sederhana dan besar yang digunakan dalam skrip shell.

-W versi

--Versi cetak maklumat versi untuk salinan gawk tertentu pada output piawai. Ini berguna terutamanya untuk mengetahui sama ada salinan gawk terkini pada sistem anda adalah terkini berkaitan dengan apa yang dibahagikan kepada Yayasan Perisian Bebas. Ini juga berguna ketika melaporkan bug. (Mengikut Piawaian Pengekodan GNU , pilihan ini menyebabkan keluar segera, berjaya.)

- Isyarat akhir pilihan. Ini berguna untuk membolehkan hujah-hujah lanjut ke program AWK sendiri untuk bermula dengan `` - ''. Ini adalah terutamanya untuk konsistensi dengan konvensyen parsing argumen yang digunakan oleh kebanyakan program POSIX yang lain.

Dalam mod keserasian, sebarang pilihan lain ditandakan sebagai tidak sah, tetapi tidak boleh diabaikan. Dalam operasi biasa, selagi teks program telah dibekalkan, pilihan tidak diketahui diteruskan ke program AWK dalam array ARGV untuk diproses. Ini amat berguna untuk menjalankan program AWK menerusi mekanisme penterjemah `` # '' yang dapat dilaksanakan.

PELAJAR PROGRAM AWK

Program AWK terdiri daripada urutan pernyataan tindakan corak dan definisi fungsi opsyenal.

corak { statement action }

nama fungsi ( senarai parameter ) { statements }

Gawk mula-mula membaca sumber program dari fail-fail (s) jika ditentukan, dari argumen ke --source , atau dari hujah bukan pilihan pertama pada baris arahan. Pilihan -f dan --source boleh digunakan beberapa kali pada baris arahan. Gawk membaca teks program seolah-olah semua fail program dan teks sumber baris arahan telah digabungkan bersama. Ini berguna untuk membina perpustakaan fungsi AWK, tanpa perlu memasukkannya ke dalam setiap program AWK baru yang menggunakannya. Ia juga menyediakan keupayaan untuk menggabungkan fungsi perpustakaan dengan program arahan.

Pembolehubah persekitaran AWKPATH menentukan laluan carian untuk digunakan apabila mencari fail sumber dinamakan dengan pilihan -f . Jika pembolehubah ini tidak wujud, jalan lalai adalah ".: / Usr / local / share / awk" . (Direktori sebenar mungkin berbeza-beza, bergantung kepada cara gawk dibina dan dipasang.) Jika nama fail diberikan kepada pilihan -f mengandungi aksara `` / '', tiada carian jalan dilakukan.

Gawk melaksanakan program AWK mengikut urutan berikut. Pertama, semua tugasan berubah yang ditentukan melalui pilihan -v dilakukan. Selanjutnya, gawk menyusun program ke dalam bentuk dalaman. Kemudian, gawk melaksanakan kod dalam blok BEGIN (s) (jika ada), dan kemudian meneruskan membaca setiap fail yang dinamakan dalam array ARGV . Sekiranya tiada fail yang dinamakan di baris arahan, gawk membaca input standard.

Jika nama fail pada baris arahan mempunyai bentuk var = val ia diperlakukan sebagai pemboleh ubah pembolehubah. Var pembolehubah akan diberikan nilai val . (Ini berlaku selepas mana-mana blok BEGIN (s) telah dijalankan.) Pengatur pembolehubah baris arahan paling berguna untuk memberikan nilai secara dinamik kepada pemboleh ubah yang menggunakan AWK untuk mengawal bagaimana input dipecah ke dalam bidang dan rekod. Ia juga berguna untuk mengawal keadaan jika berbilang pas dalam satu fail data.

Sekiranya nilai elemen tertentu ARGV kosong ( "" ), gawk melangkauinya.

Untuk setiap rekod dalam input, ujian gawk untuk melihat sama ada ia sepadan dengan corak dalam program AWK. Untuk setiap pola yang rekod itu sepadan, tindakan yang berkaitan akan dilaksanakan. Corak diuji mengikut urutan yang berlaku dalam program ini.

Akhirnya, selepas semua input habis, gawk melaksanakan kod dalam blok END (jika ada).

Pembolehubah, Rekod dan Bidang

Pemboleh ubah AWK dinamik; mereka wujud apabila mereka mula-mula digunakan. Nilai mereka adalah sama ada nombor terapung atau rentetan, atau kedua-duanya, bergantung kepada bagaimana ia digunakan. AWK juga mempunyai tatasusunan satu dimensi; tatasusunan dengan pelbagai dimensi boleh disimulasikan. Beberapa pembolehubah yang telah ditetapkan ditetapkan sebagai program yang dijalankan; ini akan diterangkan seperti yang diperlukan dan diringkaskan di bawah.

Rekod

Biasanya, rekod dipisahkan oleh aksara baru. Anda boleh mengawal bagaimana rekod dipisahkan dengan memberikan nilai kepada RS berubah terbina dalam. Jika RS adalah sebarang aksara tunggal, watak itu memisahkan rekod. Jika tidak, RS adalah ungkapan biasa. Teks dalam input yang sepadan dengan ungkapan biasa ini memisahkan rekod. Walau bagaimanapun, dalam mod keserasian, hanya watak pertama bagi nilai rentetannya digunakan untuk memisahkan rekod. Sekiranya RS ditetapkan pada rentetan null, maka rekod dipisahkan dengan baris kosong. Apabila RS ditetapkan kepada rentetan null, watak garis baru selalu bertindak sebagai pemisah lapangan, sebagai tambahan kepada sebarang nilai yang mungkin ada FS .

Medan

Oleh kerana setiap rekod input dibaca, gawk memecah rekod ke dalam bidang , menggunakan nilai pembolehubah FS sebagai pemisah lapangan. Jika FS adalah satu aksara, bidang dipisahkan oleh watak itu. Jika FS adalah rentetan nol, maka setiap watak individu menjadi medan berasingan. Jika tidak, FS dijangka menjadi ungkapan biasa penuh. Dalam kes khas bahawa FS adalah ruang tunggal, bidang dipisahkan oleh berjalan ruang dan / atau tab dan / atau baris baru. (Tetapi lihat perbincangan - posix , di bawah). NOTA: Nilai IGNORECASE (lihat di bawah) juga memberi kesan kepada bagaimana bidang dipecah apabila FS adalah ungkapan biasa, dan bagaimana rekod dipisahkan apabila RS adalah ungkapan biasa.

Jika pembolehubah FIELDWIDTHS disetkan ke senarai nombor ruang yang dipisahkan, setiap medan dijangka mempunyai lebar tetap, dan memisahkan rekod menggunakan lebar yang ditentukan. Nilai FS diabaikan. Menetapkan nilai baru kepada FS mengatasi penggunaan FIELDWIDTHS , dan mengembalikan kelakuan lalai.

Setiap medan dalam rekod input mungkin dirujuk oleh kedudukannya, $ 1 , $ 2 , dan sebagainya. $ 0 adalah rekod keseluruhan. Bidang tidak perlu dirujuk oleh pemalar:

n = 5
cetak $ n

mencetak medan kelima dalam rekod input.

Variabel NF ditetapkan kepada jumlah medan dalam rekod masukan.

Rujukan kepada medan tidak wujud (iaitu bidang selepas $ NF ) menghasilkan rentetan null. Walau bagaimanapun, memberi nilai kepada bidang yang tidak wujud (misalnya, $ (NF + 2) = 5 ) meningkatkan nilai NF , mewujudkan sebarang medan intervensi dengan rentetan null sebagai nilai mereka, dan menyebabkan nilai $ 0 dikembalikan, dengan bidang yang dipisahkan oleh nilai OFS . Rujukan kepada medan bernombor negatif menyebabkan ralat yang membawa maut. Pengurangan NF menyebabkan nilai-nilai medan melewati nilai baru yang hilang, dan nilai $ 0 dikira semula, dengan medan dipisahkan oleh nilai OFS .

Menetapkan nilai ke medan sedia ada menyebabkan seluruh rekod dibina semula apabila $ 0 dirujuk. Begitu juga, menyerahkan nilai kepada $ 0 menyebabkan rekod itu menjadi resit, mewujudkan nilai baru untuk medan.

Pembolehubah terbina dalam

Pembolehubah terbina dalam Gawk adalah:

ARGC

Bilangan hujah baris arahan (tidak termasuk pilihan untuk menghidupkan atau sumber program).

ARGIND

Indeks dalam ARGV fail semasa sedang diproses.

ARGV

Arahan hujah baris perintah. Arahan diindeks dari 0 ke ARGC - 1. Secara dinamik mengubah kandungan ARGV dapat mengawal fail yang digunakan untuk data.

BINMODE

Pada sistem bukan POSIX, gunakan mod `` binari 'untuk semua fail I / O. Nilai angka 1, 2, atau 3, menyatakan bahawa fail input, fail output, atau semua fail, masing-masing, harus menggunakan I / O binari. Nilai rentetan "r" , atau "w" menentukan bahawa fail input, atau fail output, masing-masing, harus menggunakan I / O binari. Nilai rentetan "rw" atau "wr" menyatakan bahawa semua fail harus menggunakan I / O binari. Mana-mana nilai rentetan lain dianggap sebagai "rw" , tetapi menghasilkan mesej amaran.

CONVFMT

Format penukaran untuk nombor, "% .6g" , secara lalai.

ENVIRON

Pelbagai yang mengandungi nilai persekitaran semasa. Arahan diindeks oleh pembolehubah persekitaran, setiap elemen menjadi nilai pembolehubah tersebut (misalnya, ENVIRON ["HOME") mungkin / home / arnold ). Mengubah array ini tidak menjejaskan persekitaran yang dilihat oleh program yang membangkitkan semangat melalui fungsi redirection atau sistem () .

ERRNO

Jika ralat sistem berlaku sama ada melakukan pengalihan untuk getline , semasa membaca untuk getline , atau semasa tutup () , maka ERRNO akan mengandungi rentetan yang menggambarkan ralat. Nilai adalah tertakluk kepada terjemahan dalam bahasa bukan bahasa Inggeris.

FIELDWIDTHS

Senarai ruang lapang putih dipisahkan. Apabila ditetapkan, gawk memasangkan masukan ke dalam bidang lebar tetap, bukannya menggunakan nilai pembolehubah FS sebagai pemisah medan.

NAMA FAIL

Nama fail input semasa. Jika tiada fail ditentukan pada baris arahan, nilai FILENAME ialah `` - ''. Bagaimanapun, FILENAME tidak ditentukan di dalam blok BEGIN (kecuali ditetapkan oleh getline ).

FNR

Nombor rekod masukan dalam fail input semasa.

FS

Pemisah medan input, ruang secara lalai. Lihat Bidang , di atas.

IGNORECASE

Mengawal sensitiviti kes semua ekspresi biasa dan operasi rentetan. Jika IGNORECASE mempunyai nilai bukan sifar, maka perbandingan rentetan dan padanan corak dalam peraturan, pemisahan medan dengan FS , rekod berpisah dengan RS , padanan ungkapan biasa dengan ~ dan ! ~ , Dan gensub () , gsub () , indeks () , perlawanan () , split () , dan sub () fungsi terbina dalam semua mengabaikan kes ketika melakukan operasi ekspresi secara tetap. NOTA: Penjejakan Array tidak terjejas, dan juga fungsi asort () .

Jadi, jika IGNORECASE tidak sama dengan sifar, / aB / sepadan dengan semua rentetan "ab" , "aB" , "Ab" , dan "AB" . Seperti semua pemboleh ubah AWK, nilai awal IGNORECASE adalah sifar, oleh itu semua ekspresi biasa dan operasi rentetan biasanya bersifat kes-kes. Di bawah Unix, set aksara aksara ISO 8859-1 yang penuh digunakan apabila mengabaikan kes.

LINT

Menyediakan kawalan dinamik pilihan --lint dari dalam program AWK. Apabila benar, gawk mencetak amaran merah. Apabila palsu, tidak. Apabila diberi nilai rentetan "maut" , amaran serum menjadi kesalahan maut, sama seperti --lint = maut . Sebarang nilai sebenar yang lain hanya mencetak amaran.

NF

Bilangan medan dalam rekod input semasa.

NR

Jumlah bilangan rekod masukan yang dilihat setakat ini.

OFMT

Format keluaran untuk nombor, "% .6g" , secara lalai.

OFS

Pemisah medan output, ruang secara lalai.

ORS

Pemisah rekod keluaran, secara lalai garis baru.

PROCINFO

Unsur-unsur dari rangkaian ini memberikan akses kepada maklumat mengenai program AWK yang sedang berjalan. Pada sesetengah sistem, mungkin ada elemen dalam array, "group1" melalui "kumpulan n " untuk beberapa n , iaitu bilangan kumpulan tambahan yang mempunyai proses tersebut. Gunakan di dalam operator untuk menguji unsur-unsur ini. Unsur berikut dijamin boleh didapati:

PROCINFO ["egid"]

nilai getegid (2) panggilan sistem.

PROCINFO ["euid"]

nilai sistem geteuid (2) panggilan.

PROCINFO ["FS"]

"FS" jika pemisahan medan dengan FS berkuat kuasa, atau "FIELDWIDTHS" jika pemisahan medan dengan FIELDWIDTHS berkuatkuasa.

PROCINFO ["gid"]

nilai getgid (2) panggilan sistem.

PROCINFO ["pgrpid"]

ID proses proses proses semasa.

PROCINFO ["pid"]

ID proses proses semasa.

PROCINFO ["ppid"]

ID proses induk proses semasa.

PROCINFO ["uid"]

nilai sistem panggilan getuid (2).

RS

Pemisah rekod input, secara lalai garis baru.

RT

Penafsiran rekod. Gawk menetapkan RT kepada teks input yang sepadan dengan aksara atau ungkapan biasa yang ditentukan oleh RS .

RSTART

Indeks watak pertama yang dipadankan dengan padanan () ; 0 jika tiada perlawanan. (Ini menunjukkan bahawa indeks karakter bermula pada satu.)

RLENGTH

Panjang tali dipadankan dengan padanan () ; -1 jika tiada perlawanan.

SUBSEP

Watak yang digunakan untuk memisahkan beberapa subskrip dalam unsur array, secara lalai "\ 034" .

TEXTDOMAIN

Domain teks program AWK; digunakan untuk mencari terjemahan setempat untuk rentetan program.

Arrays

Array ditegak dengan ungkapan antara kurungan segi empat (dan). Jika ekspresi adalah senarai ekspresi ( expr , expr ...) maka subskrip array adalah rentetan yang terdiri dari penggabungan nilai (string) setiap ungkapan, dipisahkan oleh nilai pembolehubah SUBSEP . Kemudahan ini digunakan untuk mensimulasikan pelbagai dimensi dimensi. Sebagai contoh:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "halo, dunia \ n"

menyerahkan rentetan "halo, dunia \ n" kepada elemen array x yang diindeks oleh rentetan "A \ 034B \ 034C" . Semua array di AWK bersekutu, iaitu diindeks oleh nilai rentetan.

Pengendali khas dalam boleh digunakan dalam pernyataan jika atau semasa untuk melihat sama ada tatas mempunyai indeks yang terdiri daripada nilai tertentu.

jika (array dalam array) cetak array [val]

Jika array mempunyai banyak subskrip, gunakan (i, j) dalam array .

Yang dibina juga boleh digunakan dalam gelung untuk melewati semua unsur array.

Satu elemen boleh dipadamkan dari tatasusunan menggunakan pernyataan padam . Kenyataan pemadaman juga boleh digunakan untuk memadam keseluruhan kandungan sesuatu tatasusunan, hanya dengan menyatakan nama tatasusunan tanpa suatu subskrip.

Penyetaan dan Penukaran Variabel

Pembolehubah dan medan mungkin (nombor terapung) nombor, atau rentetan, atau kedua-duanya. Bagaimana nilai pemboleh ubah ditafsirkan bergantung kepada konteksnya. Jika digunakan dalam ungkapan berangka, ia akan dianggap sebagai nombor, jika digunakan sebagai rentetan ia akan dianggap sebagai rentetan.

Untuk memaksa pemboleh ubah untuk diperlakukan sebagai nombor, tambah 0 kepadanya; untuk memaksa ia dianggap sebagai rentetan, mengikatnya dengan rentetan null.

Apabila rentetan mesti ditukar kepada nombor, penukaran dicapai menggunakan strtod (3). Nombor ditukarkan kepada rentetan dengan menggunakan nilai CONVFMT sebagai rentetan format untuk sprintf (3), dengan nilai angka pemboleh ubah sebagai hujah. Walau bagaimanapun, walaupun semua nombor di AWK adalah titik terapung, nilai-nilai integral sentiasa ditukar sebagai bilangan bulat. Oleh itu, diberikan

CONVFMT = "% 2.2f" a = 12 b = a ""

pemboleh ubah b mempunyai nilai rentetan "12" dan bukan "12.00" .

Gawk melakukan perbandingan seperti berikut: Jika dua pembolehubah adalah angka, mereka dibandingkan secara berangka. Jika satu nilai adalah angka dan yang lain mempunyai nilai rentetan yang merupakan `` rentetan angka, '' maka perbandingan juga dilakukan secara berangka. Jika tidak, nilai angka ditukar kepada rentetan dan perbandingan rentetan dilakukan. Kedua-dua rentetan itu, tentu saja, sebagai rentetan. Perhatikan bahawa piawaian POSIX menggunakan konsep `` string numerik '' di mana-mana, walaupun pada pemalar rentetan. Walau bagaimanapun, ini jelas tidak tepat dan tidak melakukan perkara ini. (Untungnya, ini ditetapkan dalam versi standard seterusnya.)

Perhatikan bahawa pemalar rentetan, seperti "57" , bukan rentetan angka, ia adalah pemalar rentetan. Idea `` string numerik '' hanya berlaku untuk bidang, getline input, FILENAME , elemen ARGV , elemen ENVIRON dan unsur-unsur array yang dicipta oleh split () yang merupakan rentetan angka. Idea asas ialah input pengguna , dan hanya input pengguna, yang kelihatan berangka, harus diperlakukan dengan cara itu.

Pembolehubah yang tidak dikenali mempunyai nilai angka 0 dan nilai rentetan "" (batal, atau kosong, rentetan).

Octal dan Heksadecimal Constants

Bermula dengan versi 3.1 daripada gawk, anda boleh menggunakan pemalar okta dan heksadesimal C-gaya dalam kod sumber program AWK anda. Sebagai contoh, nilai oktal 011 bersamaan dengan perpuluhan 9 , dan nilai heksadesimal 0x11 bersamaan dengan perpuluhan 17.

Selang String

Peralihan string dalam AWK adalah urutan aksara yang dilampirkan di antara petikan berganda ( " ). Di dalam rentetan, urutan melarikan diri tertentu diiktiraf, seperti dalam C. Ini adalah:

\\

Backslash literal.

\ a

Watak `` amaran ''; biasanya watak BEL ASCII.

\ b

backspace.

\ f

borang suapan.

\ n

baris baru.

\ r

pulangan kereta.

\ t

tab mendatar.

\ v

tab menegak.

\ x hex digit

Watak yang diwakili oleh rentetan angka heksadesimal berikut \ x . Seperti dalam ANSIC, semua digit heksadesimal berikut dianggap sebahagian daripada urutan melarikan diri. (Ciri ini harus memberitahu kami sesuatu tentang reka bentuk bahasa oleh jawatankuasa.) Misalnya, "\ x1B" adalah watak ASCIIESC (melarikan diri).

\ ddd

Watak yang diwakili oleh urutan nombor 1-, 2, atau 3 digit digit oktaf. Contohnya, "\ 033" ialah watak ASCII ESC (melarikan diri).

\ c

Watak literal c .

Urutan melarikan diri juga boleh digunakan di dalam ungkapan tetap yang berterusan (misalnya, / [\ t \ f \ n \ r \ v] / padankan aksara ruang kosong).

Dalam mod keserasian, watak-watak yang diwakili oleh urutan larian okta dan heksadesimal dilayan secara literal apabila digunakan dalam pemalar ekspresi biasa. Oleh itu, / a \ 52b / bersamaan dengan / a \ * b / .

Corak dan Tindakan

AWK adalah bahasa berorientasikan talian. Corak yang datang pertama, dan kemudian tindakan. Kenyataan tindakan disertakan dalam { dan } . Sama ada pola itu mungkin hilang, atau tindakan itu mungkin hilang, tetapi, tentu saja, tidak keduanya. Jika coraknya hilang, tindakan itu dilaksanakan untuk setiap rekod input. Tindakan yang hilang adalah bersamaan dengan

{print}

yang mencetak keseluruhan rekod.

Komen bermula dengan watak `` # '', dan berterusan sehingga akhir baris. Barisan kosong boleh digunakan untuk memisahkan kenyataan. Biasanya, pernyataan berakhir dengan garis baru, namun, ini bukanlah kes bagi baris yang berakhir dalam ``, '', { , ? , : , && , atau || . Garis akhir yang dilakukan atau tidak juga mempunyai pernyataan mereka secara automatik diteruskan pada baris berikut. Dalam kes lain, garisan boleh diteruskan dengan menamatkannya dengan ', di mana garis baharu akan diabaikan.

Kenyataan berbilang boleh diletakkan pada satu baris dengan memisahkannya dengan ``; ''. Ini terpakai kepada kedua-dua pernyataan di dalam bahagian tindakan pasangan corak tindakan (kes biasa), dan kepada pernyataan tindakan pola itu sendiri.

Corak

Corak AWK mungkin salah satu daripada yang berikut:

BEGIN END / ekspresi biasa / corak ekspresi relasi & & pola corak || corak corak ? corak : corak ( corak ) ! corak pattern1 , pattern2

BEGIN dan END adalah dua jenis corak khas yang tidak diuji terhadap input. Bahagian tindakan semua BEGIN corak disatukan seolah-olah semua kenyataan telah ditulis dalam blok BEGIN tunggal. Mereka dilaksanakan sebelum mana-mana input dibaca. Begitu juga, semua blok END digabungkan, dan dilaksanakan apabila semua input telah habis (atau ketika pernyataan keluar dilaksanakan). BEGIN dan END corak tidak boleh digabungkan dengan corak lain dalam ungkapan corak. BEGIN dan END pola tidak boleh mempunyai komponen tindakan yang hilang.

Untuk / ungkapan biasa / pola, pernyataan yang berkaitan dilaksanakan untuk setiap rekod masukan yang sepadan dengan ungkapan biasa. Ungkapan-ungkapan yang kerap adalah sama dengan orang-orang dalam egrep (1), dan diringkaskan di bawah.

Ungkapan hubungan boleh menggunakan mana-mana pengendali yang ditakrifkan di bawah dalam bahagian tindakan. Ini biasanya menguji sama ada bidang tertentu sepadan dengan ungkapan biasa tertentu.

The && , || , dan ! pengendali adalah logik DAN, logik A, dan tidak logik, masing-masing, seperti dalam C. Mereka membuat penilaian litar pintas, juga seperti dalam C, dan digunakan untuk menggabungkan ungkapan corak yang lebih primitif. Seperti kebanyakan bahasa, kurungan boleh digunakan untuk mengubah susunan penilaian.

Pengendali itu seperti pengendali yang sama dalam C. Jika corak pertama adalah benar maka corak yang digunakan untuk ujian adalah corak kedua, jika tidak ia adalah yang ketiga. Hanya satu daripada pola kedua dan ketiga yang dinilai.

Corak1 , bentuk pola2 suatu ungkapan dipanggil corak pelbagai . Ia sepadan dengan semua rekod input bermula dengan rekod yang sepadan dengan pattern1 , dan berterusan sehingga rekod yang sepadan dengan pattern2 , inklusif. Ia tidak menggabungkan dengan apa-apa ungkapan ungkapan yang lain.

Ekspresi Biasa

Ungkapan yang kerap adalah jenis yang diperpanjang dijumpai dalam egrep . Mereka terdiri daripada watak-watak seperti berikut:

c

sepadan dengan non-metacharacter c .

\ c

sepadan dengan watak literal c .

.

perlawanan mana-mana watak termasuk garis baru.

^

sepadan dengan permulaan rentetan.

$

Perlawanan akhir rentetan.

[ abc ... ]

senarai watak, sepadan dengan mana-mana aksara abc ....

[^ abc ... ]

senarai watak yang ditolak, sepadan dengan mana-mana aksara kecuali abc ....

r1 | r2

penggantian: perlawanan sama ada r1 atau r2 .

r1r2

penyambungan: perlawanan r1 , dan kemudian r2 .

r +

perlawanan satu atau lebih r .

r *

perlawanan sifar atau lebih r .

r ?

perlawanan sifar atau satu r .

( r )

pengelompokan: perlawanan r .

r { n }

r { n ,}

r { n , m } Satu atau dua nombor di dalam pendakap menandakan ungkapan selang . Sekiranya terdapat satu nombor dalam pendakap, ungkapan biasa sebelumnya r diulang n kali. Sekiranya terdapat dua nombor yang dipisahkan oleh koma, r diulangi n ke m kali. Sekiranya terdapat satu nombor diikuti dengan koma, maka r diulang sekurang-kurangnya n kali.

Ekspresi selang hanya tersedia jika sama ada - paris atau - selang-sel ditentukan di baris arahan.

\ y

memadankan tali kosong sama ada pada permulaan atau akhir perkataan.

\ B

sepadan dengan tali kosong dalam satu perkataan.

\ <

sepadan dengan tali kosong pada permulaan perkataan.

\>

sepadan dengan tali kosong pada akhir perkataan.

\ w

memadankan mana-mana watak-watak perkataan (huruf, digit, atau garis bawah).

\ W

memadankan mana-mana watak yang bukan perkataan-konstituen.

\ '

padanan rentetan kosong pada permulaan penimbal (rentetan).

'

sepadan dengan tali kosong pada akhir penampan.

Urutan pelarian yang sah dalam pemalar rentetan (lihat di bawah) juga sah dalam ungkapan biasa.

Kelas watak adalah ciri baru yang diperkenalkan dalam piawai POSIX. Kelas watak adalah notasi khusus untuk menggambarkan senarai watak-watak yang mempunyai atribut khusus, tetapi di mana watak-watak sebenar sendiri boleh berbeza dari negara ke negara dan / atau dari watak yang ditetapkan ke set aksara. Contohnya, tanggapan mengenai watak abjad berbeza di Amerika Syarikat dan di Perancis.

Kelas aksara hanya sah dalam ungkapan biasa di dalam kurungan senarai watak. Kelas watak terdiri daripada [: , kata kunci menandakan kelas, dan :] . Kelas watak yang ditakrifkan oleh piawai POSIX ialah:

[: alnum:]

Aksara abjad angka.

[: alpha:]

Aksara abjad.

[: blank:]

Aksara ruang atau tab.

[: cntrl:]

Mengawal aksara.

[: digit:]

Aksara angka.

[: graf:]

Watak-watak yang boleh dicetak dan boleh dilihat. (Ruang boleh dicetak, tetapi tidak dapat dilihat, manakala yang kedua adalah.)

[: lebih rendah:]

Aksara abjad huruf kecil.

[: cetak:]

Watak cetak (aksara yang tidak mengawal watak.)

[: punct:]

Watak tanda baca (aksara yang bukan huruf, digit, aksara kawalan, atau aksara ruang).

[: ruang:]

Watak-watak ruang (seperti ruang, tab, dan formfeed, untuk menamakan beberapa).

[: atas:]

Huruf abjad huruf besar.

[: xdigit:]

Watak yang angka heksadesimal.

Sebagai contoh, sebelum piawai POSIX, untuk menyesuaikan aksara abjad angka, anda perlu menulis / [A-Za-z0-9] / . Jika watak watak anda mempunyai aksara abjad yang lain di dalamnya, ini tidak sepadan dengannya, dan jika watak anda disusun secara berbeza daripada ASCII, ini mungkin tidak sepadan dengan aksara abjad angka ASCII. Dengan kelas aksara POSIX, anda boleh menulis / [[: alnum:]] / , dan ini sepadan dengan aksara abjad dan angka dalam set aksara anda.

Dua urutan khas tambahan boleh muncul dalam senarai watak. Ini digunakan untuk set aksara bukan ASCII, yang boleh mempunyai simbol tunggal (dipanggil unsur penyusun) yang diwakili dengan lebih daripada satu aksara, serta beberapa aksara yang bersamaan untuk menyusun , atau menyusun, tujuan. (Contohnya, dalam bahasa Perancis, `` e '' yang jelas dan 'e' yang beransur-ansur adalah bersamaan.)

Simbol menggali

Simbol penggabungan adalah unsur penyusun pelbagai aksara yang dilampirkan di [. dan .] . Sebagai contoh, jika ch ialah elemen yang menyusun, maka [[.ch.]] Adalah ungkapan biasa yang sepadan dengan unsur penyusun ini, manakala [ch] adalah ungkapan biasa yang sepadan dengan sama ada c atau h .

Kelas Kesetaraan

Kelas kesetaraan adalah nama spesifik setempat untuk senarai watak yang bersamaan. Nama tersebut dilampirkan dalam [= dan =] . Sebagai contoh, nama e mungkin digunakan untuk mewakili semua `` e, '' `'e', '' dan` `e`. '' Dalam kes ini, [[= e =]] perlawanan mana-mana e , e ' , atau e` .

Ciri-ciri ini sangat berharga di kawasan berbahasa bukan bahasa Inggeris. Fungsi perpustakaan yang menggunakan gawk untuk padanan ungkapan biasa pada masa ini hanya mengenali kelas karakter POSIX; mereka tidak mengenali simbol penyambungan atau kelas kesetaraan.

Pengendali \ y , \ B , \ < , \> , \ w , \ W , \ ' , dan \' adalah khusus untuk menghidupkan ; mereka adalah sambungan berdasarkan kemudahan dalam perpustakaan ungkapan biasa GNU.

Pelbagai pilihan baris arahan mengawal cara mengalihkan aksara dalam ungkapan biasa.

Tiada pilihan

Dalam kes lalai, gawk menyediakan semua kemudahan ekspresi biasa POSIX dan operator ekspresi biasa GRN yang diterangkan di atas. Walau bagaimanapun, ungkapan selang tidak disokong.

-

Hanya POSIX ungkapan biasa yang disokong, pengendali GNU tidak istimewa. (Contohnya, \ w sepadan dengan w literal). Ungkapan interval dibenarkan.

--traditional

Unix Tradisional dan ekspresi biasa dipadankan. Pengendali GNU tidak khas, ungkapan interval tidak tersedia, dan kelas POSIX tidak sama ( [[: alnum:]] dan sebagainya). Watak-watak yang diterangkan oleh urutan melarikan diri oktaf dan heksadesimal dilayan secara harfiah, walaupun mereka mewakili metacharacters ungkapan biasa.

- selang masa

Benarkan ekspresi selang dalam ungkapan biasa, walaupun - batasan telah disediakan.

Tindakan

Kenyataan tindakan disertakan dalam pendakap, { dan } . Kenyataan tindakan terdiri daripada penyataan biasa, bersyarat, dan perulangan perulangan yang terdapat dalam kebanyakan bahasa. Pengendali, pernyataan kawalan, dan pernyataan input / output yang tersedia dipalsukan selepas mereka di C.

Pengendali

Pengendali di AWK, dalam rangka penurunan prioritas, adalah

( ... )

Pengumpulan

$

Rujukan lapangan.

++ -

Peningkatan dan pengurangan, kedua-dua awalan dan postfix.

^

Exponentiation ( ** juga boleh digunakan, dan ** = untuk operator tugasan).

+ -!

Unary plus, unary minus, dan penolakan logik.

* /%

Pendaraban, pembahagian, dan modulus.

+ -

Penambahan dan penolakan.

ruang

Penyambungan tali.

<>

<=> =

! = == Pengendali relasi biasa.

~! ~

Perlawanan ungkapan biasa, perlawanan ditolak. NOTA: Jangan gunakan ungkapan biasa yang berterusan ( / foo / ) di sebelah kiri ~ atau ! ~ . Hanya gunakan satu di sebelah kanan. Ungkapan / foo / ~ exp mempunyai erti yang sama seperti (($ 0 ~ / foo /) ~ exp ) . Ini biasanya bukan apa yang dimaksudkan.

dalam

Keahlian Array.

&&

Logik DAN.

||

Logik ATAU.

?

Ungkapan bersyarat C. Ini mempunyai expr1 bentuk ? expr2 : expr3 . Jika expr1 adalah benar, nilai ekspresi expr2 , jika tidak expr3 . Hanya satu expr2 dan expr3 dinilai.

= + = - =

* = / =% = ^ = Tugasan. Kedua-dua tugasan mutlak ( var = nilai ) dan tugasan pengendali (bentuk lain) disokong.

Penyataan Kawalan

Kenyataan kawalan adalah seperti berikut:

jika ( keadaan ) pernyataan [ pernyataan lain ] manakala pernyataan ( keadaan ) membuat pernyataan semasa ( keadaan ) untuk ( expr1 ; expr2 ; expr3 ) pernyataan untuk ( array dalam array ) penyata }

Pernyataan I / O

Kenyataan input / output adalah seperti berikut:

tutup ( fail [ , bagaimana ] )

Tutup fail, paip atau proses bersama. Pilihannya hanya boleh digunakan apabila menutup satu hujung paip dua hala ke proses bersama. Ia mestilah nilai rentetan, sama ada "kepada" atau "dari" .

getline

Tetapkan $ 0 dari rekod input seterusnya; menetapkan NF , NR , FNR .

getline < file

Tetapkan $ 0 dari rekod fail seterusnya ; tetapkan NF .

getline var

Tetapkan var dari rekod masukan seterusnya; tetapkan NR , FNR .

getline var < file

Tetapkan var dari rekod fail seterusnya .

perintah | getline [ var ]

Jalankan arahan paip output sama ada ke $ 0 atau var , seperti di atas.

command | & getline [ var ]

Jalankan perintah sebagai proses bersama perpipaan output sama ada ke $ 0 atau var , seperti di atas. Proses bersama adalah sambungan ekstra .

seterusnya

Berhenti memproses rekod masukan semasa. Rekod masukan seterusnya dibaca dan diproses bermula dengan pola pertama dalam program AWK. Jika akhir data input dicapai, blok END , jika ada, dilaksanakan.

nextfile

Berhenti memproses fail input semasa. Catatan input seterusnya akan datang dari fail input seterusnya. FILENAME dan ARGIND dikemas kini, FNR ditetapkan semula kepada 1, dan pemprosesan bermula dengan pola pertama dalam program AWK. Jika akhir data input dicapai, blok END , jika ada, dilaksanakan.

cetak

Mencetak rekod semasa. Rekod output ditamatkan dengan nilai pembolehubah ORS .

cetak expr-list

Ungkapan cetakan. Setiap ungkapan dipisahkan dengan nilai pemboleh ubah OFS . Rekod output ditamatkan dengan nilai pembolehubah ORS .

cetak expr-list > file

Ungkapan ungkapan pada fail . Setiap ungkapan dipisahkan dengan nilai pemboleh ubah OFS . Rekod output ditamatkan dengan nilai pembolehubah ORS .

printf fmt, expr-list

Format dan cetak.

printf fmt, expr-list > file

Format dan cetak pada fail .

sistem ( cmd-line )

Jalankan arahan cmd-line , dan kembalikan status keluar. (Ini mungkin tidak terdapat pada sistem bukan POSIX.)

fflush ( [ fail ] )

Siram mana-mana buffer yang berkaitan dengan fail output terbuka atau fail paip. Jika fail hilang, maka output standard dimusnahkan. Sekiranya fail adalah rentetan nol, maka semua fail output dan pipa terbuka mempunyai buffer mereka.

Peralihan output tambahan dibenarkan untuk cetak dan printf .

cetak ... >> fail

menambah output ke fail .

cetak ... | perintah

menulis pada paip.

cetak ... | & perintah

menghantar data kepada proses bersama.

Perintah getline mengembalikan 0 pada akhir fail dan -1 pada ralat. Setelah ralat, ERRNO mengandungi rentetan yang menggambarkan masalah tersebut.

NOTA: Jika menggunakan paip atau proses bersama untuk getline , atau dari cetakan atau printf dalam gelung, anda mesti menggunakan tutup () untuk membuat contoh baru arahan. AWK tidak menutup secara automatik paip atau proses bersama apabila mereka kembali EOF.

Kenyataan printf

Versi AWK pernyataan printf dan fungsi sprintf () (lihat di bawah) menerima format spesifikasi penukaran berikut:

% c

Sifat ASCII. Sekiranya hujah yang digunakan untuk % c adalah angka, ia dianggap sebagai watak dan dicetak. Jika tidak, hujah dianggap rentetan, dan satu-satunya aksara pertama yang dicetak.

% d , % i

Nombor perpuluhan (bahagian integer).

% e,% E

Nombor terapung borang [-] d.dddddde [+ -] dd . Format % E menggunakan E bukan e .

% f

Nombor terapung borang [-] ddd.dddddd .

% g,% G

Gunakan % e atau % f penukaran, yang mana lebih pendek, dengan nol yang tidak penting ditindas. Format % G menggunakan % E bukan % e .

% o

Nombor oktal yang tidak ditandatangani (juga integer).

% u Nombor perpuluhan yang tidak ditandatangani (sekali lagi, integer).

% s

Rentetan aksara.

% x,% X

Nombor heksadesek tidak ditandatangani (integer). Format % X menggunakan ABCDEF dan bukannya abcdef .

%%

Satu aksara % ; tiada hujah ditukarkan.

Pilihan, parameter tambahan mungkin terletak di antara % dan huruf kawalan:

mengira $

Gunakan hujah ' count pada titik ini dalam pemformatan. Ini dipanggil spekulator posisional dan dimaksudkan terutamanya untuk digunakan dalam versi terjemah string format, bukan dalam teks asli program AWK. Ia adalah lanjutan gawk .

-

Ekspresi harus dibiarkan di dalam bidangnya.

ruang

Untuk penukaran angka, awalan nilai positif dengan ruang, dan nilai negatif dengan tanda tolak.

+

Tanda tambah, yang digunakan sebelum pengubah lebar (lihat di bawah), menyatakan selalu membekalkan tanda untuk penukaran angka, walaupun data yang diformat adalah positif. + Mengatasi pengubah ruang.

#

Gunakan borang `` ganti '' untuk surat kawalan tertentu. Untuk % o , berikan sifar utama. Untuk % x , dan % X , berikan 0x atau 0X utama untuk hasil bukan zakat . Untuk % e , % E , dan % f , hasilnya sentiasa mengandungi titik perpuluhan. Untuk % g , dan % G , trailing nol tidak dikeluarkan dari hasilnya.

0

A leading 0 (sifar) bertindak sebagai bendera, yang menunjukkan output harus empuk dengan sifar bukannya ruang. Ini terpakai walaupun kepada format output bukan angka. Bendera ini hanya mempunyai kesan apabila lebar medan lebih luas daripada nilai yang akan dicetak.

lebar

Medan harus dipenuhi dengan lebar ini. Bidang ini biasanya dipenuhi dengan ruang. Sekiranya bendera 0 telah digunakan, ia menjadi empuk dengan sifar.

. prec

Nombor yang menentukan ketepatan untuk digunakan semasa mencetak. Untuk format % e , % E , dan % f , ini menentukan bilangan digit yang anda mahu dicetak di sebelah kanan titik perpuluhan. Untuk format % g , dan % G , ia menentukan nombor maksimum digit penting. Untuk format % d , % o , % i , % u , % x , dan % X , ia menentukan nombor minimum digit untuk dicetak. Untuk % s , ia menentukan bilangan maksimum aksara dari rentetan yang perlu dicetak.

Lebar dinamik dan keupayaan pra rutin printf () rutin ANSI C disokong. A * di mana sama ada lebar atau spesifikasi pra menyebabkan nilai mereka diambil dari senarai hujah kepada printf atau sprintf () . Untuk menggunakan spekulator posisional dengan lebar atau ketepatan yang dinamik, berikan kiraan $ selepas * dalam rentetan format. Sebagai contoh, "% 3 $ * 2 $. * 1 $ s" .

Nama Fail Khas

Apabila melakukan pengalihan I / O dari cetakan atau printf ke fail, atau melalui getline dari fail, gawk mengiktiraf nama fail khas tertentu secara dalaman. Nama fail ini membolehkan akses untuk membuka deskriptor fail yang diwarisi dari proses induk gawk (biasanya shell). Nama fail ini juga boleh digunakan pada baris arahan untuk menamakan fail data. Nama fail adalah:

/ dev / stdin

Input standard.

/ dev / stdout

Output standard.

/ dev / stderr

Keluaran ralat piawai.

/ dev / fd / n

Fail yang berkaitan dengan deskriptor fail terbuka n .

Ini amat berguna untuk mesej ralat. Sebagai contoh:

cetak "Anda meniupnya!" > "/ dev / stderr"

sedangkan anda sebaliknya harus menggunakannya

cetak "Anda meniupnya!" | "kucing 1> & 2"

Nama fail khas berikut boleh digunakan dengan pengendali | & bersama proses untuk membuat sambungan rangkaian TCP / IP.

/ inet / tcp / lport / rhost / rport

Fail untuk sambungan TCP / IP pada lport port tempatan kepada hos host jauh pada rawak port jauh. Gunakan port 0 untuk mempunyai sistem memilih pelabuhan.

/ inet / udp / lport / rhost / rport

Sama, tetapi gunakan UDP / IP bukan TCP / IP.

/ inet / raw / lport / rhost / rport

Dikhaskan untuk kegunaan masa depan.

Nama fail khas lain memberikan akses kepada maklumat mengenai proses gawat yang sedang berjalan. Nama fail ini kini sudah usang. Gunakan array PROCINFO untuk mendapatkan maklumat yang mereka berikan. Nama fail adalah:

/ dev / pid

Membaca fail ini mengembalikan ID proses proses semasa, dalam perpuluhan, ditamatkan dengan garis baharu.

/ dev / ppid

Membaca fail ini mengembalikan ID proses induk proses semasa, dalam perpuluhan, ditamatkan dengan garis baharu.

/ dev / pgrpid

Membaca fail ini mengembalikan ID kumpulan proses proses semasa, dalam perpuluhan, diakhiri dengan baris baru.

/ dev / pengguna

Membaca fail ini mengembalikan rekod tunggal yang ditamatkan dengan garis baharu. Medan dipisahkan dengan ruang. $ 1 adalah nilai getuid (2) panggilan sistem, $ 2 adalah nilai geteuid (2) panggilan sistem, $ 3 adalah nilai getgid (2) panggilan sistem, dan $ 4 adalah nilai getegid (2) panggilan sistem. Sekiranya terdapat sebarang bidang tambahan, mereka adalah ID kumpulan yang dikembalikan oleh getgroups (2). Pelbagai kumpulan mungkin tidak disokong pada semua sistem.

Fungsi Numerik

AWK mempunyai fungsi aritmetik terbina dalam yang berikut:

atan2 ( y , x )

Mengembalikan arctangent y / x dalam radian.

cos ( expr )

Mengembalikan kosine expr , yang ada dalam radian.

exp ( expr )

Fungsi eksponen.

int ( expr )

Memangkas ke integer.

log ( expr )

Fungsi logaritma semulajadi.

rand ()

Mengembalikan nombor rawak antara 0 dan 1.

dosa ( expr )

Mengembalikan sinus expr , yang ada dalam radian.

sqrt ( expr )

Fungsi akar kuadrat.

srand ( [ expr ] )

Menggunakan expr sebagai benih baru untuk penjana nombor rawak. Jika tiada expr disediakan, masa digunakan. Nilai pulangan adalah benih sebelumnya untuk penjana nombor rawak.

Fungsi Rentetan

Gawk mempunyai fungsi rentetan terbina dalam berikut:

asort ( s [ , d ] )

Mengembalikan bilangan unsur dalam siri sumber s . Isi s diisih menggunakan aturan normal gawk untuk membandingkan nilai, dan indeks nilai-nilai yang diisih s digantikan dengan bilangan bulat beransur bermula dengan 1. Jika array destinasi pilihan d dinyatakan, maka s pertama diduplikasi ke d , dan kemudian d diisih, meninggalkan indeks bagi rajah sumber tidak berubah.

gensub ( r , s , h [ , t ] )

Cari rentetan sasaran t untuk perlawanan r ekspresi biasa. Jika h ialah rentetan yang bermula dengan g atau G , maka ganti semua perlawanan r dengan s . Jika tidak, h ialah nombor yang menandakan perlawanan mana r untuk menggantikan. Jika t tidak dibekalkan, $ 0 digunakan sebaliknya. Dalam teks penggantian s , urutan \ n , di mana n ialah angka dari 1 hingga 9, boleh digunakan untuk menunjukkan hanya teks yang sepadan dengan subprestasi tertutup n. Urutan \ 0 mewakili keseluruhan teks yang dipadankan, seperti juga watak & . Tidak seperti sub () dan gsub () , rentetan yang diubahsuai dikembalikan sebagai hasil fungsi, dan rentetan sasaran asal tidak diubah.

gsub ( r , s [ , t ] )

Untuk setiap substring yang sepadan dengan ungkapan biasa r dalam rentetan t , ganti rentetan s , dan kembalikan jumlah penggantian. Jika t tidak dibekalkan, gunakan $ 0 . Teks & dalam penggantian digantikan dengan teks yang sebenarnya dipadankan. Gunakan \ & untuk mendapatkan literal & . (Ini mesti ditaip sebagai "\\ &" ; lihat GAWK: Pemrograman AWK yang berkesan untuk perbincangan penuh tentang peraturan untuk & 's dan backslashes dalam teks gantian sub () , gsub () , dan gensub () .)

indeks ( s , t )

Mengembalikan indeks rentetan t dalam rentetan s , atau 0 jika t tidak hadir. (Ini menunjukkan bahawa indeks karakter bermula pada satu.)

panjang ( [ s ] )

Mengembalikan panjang rentetan s , atau panjang $ 0 jika s tidak dibekalkan.

perlawanan ( s , r [ , a ] )

Mengembalikan kedudukan dalam s di mana ungkapan biasa r berlaku, atau 0 jika r tidak hadir, dan menetapkan nilai RSTART dan RLENGTH . Perhatikan bahawa perintah hujah adalah sama dengan pengendali ~ : str ~ semula . Jika array a disediakan, a akan dibersihkan dan kemudian elemen 1 hingga n diisi dengan bahagian-bahagian s yang sepadan dengan subexpression tertutup yang sesuai di r . Unsur 0'th yang mengandungi bahagian s yang dipadankan oleh keseluruhan ungkapan biasa r .

berpecah ( s , a [ , r ] )

Pecah tali ke dalam array a pada r ekspresi biasa, dan mengembalikan bilangan medan. Jika r diabaikan, FS digunakan sebaliknya. Arahan a dibersihkan terlebih dahulu. Pemisahan berkelakuan sama kepada pemisahan medan, yang diterangkan di atas.

sprintf ( fmt , expr -list )

Cetakan senarai expr mengikut fmt , dan mengembalikan rentetan yang terhasil.

strtonum ( str )

Mengkaji str , dan mengembalikan nilai numeriknya. Jika str bermula dengan 0 utama, strtonum () menganggap bahawa str adalah nombor okta . Jika str bermula dengan 0x atau 0X utama , strtonum () menganggap bahawa str adalah nombor heksadesimal.

sub ( r , s [ , t ] )

Sama seperti gsub () , tetapi hanya substring padanan pertama diganti.

substr ( s , i [ , n ] )

Mengembalikan paling banyak substring n-n yang bermula pada i . Jika n diabaikan, s yang lain digunakan.

tolower ( str )

Mengembalikan salinan str strata , dengan semua aksara huruf besar dalam str diterjemahkan ke rakan sejawat yang sama. Watak bukan abjad dibiarkan tidak berubah.

toupper ( str )

Mengembalikan salinan str strings , dengan semua huruf kecil dalam str diterjemahkan ke rakan sejawatnya yang sama. Watak bukan abjad dibiarkan tidak berubah.

Fungsi Masa

Memandangkan salah satu kegunaan utama program AWK ialah memproses fail log yang mengandungi maklumat setem masa, gawk menyediakan fungsi berikut untuk mendapatkan setem masa dan memformatkannya.

mktime ( datespec )

Rurns datespec ke dalam cap waktu yang sama bentuk seperti dikembalikan oleh systime () . Datepec adalah rentetan bentuk YYYY MM DD HH MM SS [DST] . Isi rentetan adalah enam atau tujuh angka yang mewakili masing-masing tahun penuh termasuk abad, bulan dari 1 hingga 12, hari bulan dari 1 hingga 31, jam hari dari 0 hingga 23, minit dari 0 hingga 59, dan yang kedua dari 0 hingga 60, dan bendera penjimatan siang pilihan. Nilai-nilai nombor ini tidak perlu berada dalam julat yang ditentukan; sebagai contoh, satu jam -1 bermakna 1 jam sebelum tengah malam. Kalendar asal-kalendar Gregorian diandaikan, dengan tahun 0 sebelum tahun 1 dan tahun -1 sebelum tahun 0. Masa diandaikan berada dalam zon waktu setempat. Jika bendera penjimatan siang adalah positif, masa dianggap sebagai masa menjimatkan siang; jika sifar, masa dianggap sebagai masa standard; dan jika negatif (lalai), mktime () cuba menentukan sama ada waktu siang menjimatkan untuk masa yang ditetapkan. Jika tarikhpec tidak mengandungi elemen yang mencukupi atau jika masa yang terhasil di luar jangkauan, mktime () mengembalikan -1.

strftime ( [ format [ , cap waktu ]] )

Format cap waktu mengikut spesifikasi dalam format. Timestamp harus mempunyai bentuk yang sama seperti dikembalikan oleh systime () . Jika cap waktu hilang, masa semasa digunakan. Jika format hilang, format lalai bersamaan dengan output tarikh (1) digunakan. Lihat spesifikasi untuk fungsi strftime () dalam ANSI C untuk penukaran format yang dijamin tersedia. Versi domain awam domain (3) dan halaman lelaki untuknya datang dengan gawk ; jika versi itu digunakan untuk membina gawang , maka semua penukaran yang diterangkan dalam laman lelaki itu boleh didapati .

systime ()

Mengembalikan masa semasa hari sebagai bilangan saat sejak Epoch (1970-01-01 00:00:00 UTC pada sistem POSIX).

Fungsi Manipulasi Bit

Bermula dengan versi 3.1 gawk , fungsi manipulasi bit berikut boleh didapati. Mereka bekerja dengan menukar nilai titik terapung dua ketepatan ke bilangan bulat yang tidak ditandatangani , melakukan operasi, dan kemudian menukar hasilnya kembali ke titik terapung. Fungsi-fungsi tersebut adalah:

dan ( v1 , v2 )

Kembalikan bitwise DAN nilai yang disediakan oleh v1 dan v2 .

compl ( val )

Kembalikan bilangan pelengkap bit dari val .

lshift ( val , kiraan )

Pulangkan nilai val , beralih kiri dengan bit kiraan .

atau ( v1 , v2 )

Kembalikan bitwise ATAU dari nilai yang disediakan oleh v1 dan v2 .

rshift ( val , kiraan )

Kembalikan nilai val , beralih betul dengan bit kiraan .

xor ( v1 , v2 )

Kembalikan nilai XOR bitwise yang disediakan oleh v1 dan v2 .

Fungsi Pengantarabangsaan

Bermula dengan versi 3.1 gawk , fungsi berikut boleh digunakan dari dalam program AWK anda untuk menterjemahkan rentetan pada masa larian. Untuk butiran lengkap, lihat GAWK: Pemrograman Awk AWK .

bindtextdomain ( direktori [ , domain ] )

Menentukan direktori di mana mencari fail .mo , sekiranya mereka tidak akan atau tidak boleh diletakkan di lokasi `` standard '' (umpamanya, semasa ujian). Ia mengembalikan direktori di mana domain `` terikat. ''

Domain lalai adalah nilai TEXTDOMAIN . Jika direktori adalah rentetan null ( "" ), maka bindtextdomain () mengembalikan pengikatan semasa untuk domain yang diberikan.

dcgettext ( rentetan [ , domain [ , kategori ]] )

Mengembalikan terjemahan strata dalam domain domain teks untuk kategori kategori lokal. Nilai lalai untuk domain ialah nilai semasa TEXTDOMAIN . Nilai lalai untuk kategori ialah "LC_MESSAGES" .

Jika anda membekalkan nilai untuk kategori , ia mestilah rentetan yang sama dengan salah satu kategori locale yang diketahui yang diterangkan dalam GAWK: Pemrograman AWK Berkesan . Anda juga mesti membekalkan domain teks. Gunakan TEXTDOMAIN jika anda ingin menggunakan domain semasa.

dcngettext ( string1 , string2 , nombor [ , domain [ , kategori ]] )

Mengembalikan borang majmuk yang digunakan untuk bilangan terjemahan string1 dan string2 dalam domain domain teks untuk kategori kategori locale. Nilai lalai untuk domain ialah nilai semasa TEXTDOMAIN . Nilai lalai untuk kategori ialah "LC_MESSAGES" .

Jika anda membekalkan nilai untuk kategori , ia mestilah rentetan yang sama dengan salah satu kategori locale yang diketahui yang diterangkan dalam GAWK: Pemrograman AWK Berkesan . Anda juga mesti membekalkan domain teks. Gunakan TEXTDOMAIN jika anda ingin menggunakan domain semasa.

FUNCTIONS-DEFINED FUNCTIONS

Fungsi AWK ditakrifkan seperti berikut:

nama fungsi ( senarai parameter ) { statements }

Fungsi dilaksanakan apabila mereka dipanggil dari dalam ekspresi sama ada corak atau tindakan. Parameter sebenar yang dibekalkan dalam panggilan fungsi digunakan untuk memberi contoh parameter rasmi yang diisytiharkan dalam fungsi tersebut. Array diluluskan dengan rujukan, pembolehubah lain diluluskan dengan nilai.

Oleh kerana fungsi tidak pada asalnya sebahagian daripada bahasa AWK, peruntukan untuk pemboleh ubah tempatan agak canggung: Mereka diisytiharkan sebagai parameter tambahan dalam senarai parameter. Konvensyen ini untuk memisahkan pembolehubah setempat daripada parameter sebenar dengan ruang tambahan dalam senarai parameter. Sebagai contoh:

fungsi f (p, q, a, b) # a dan b ialah {...} / abc / {...; f (1, 2); ...}

Tanda kurung kiri dalam panggilan fungsi diperlukan untuk segera mengikuti nama fungsi, tanpa memasuki ruang putih. Ini adalah untuk mengelakkan kekaburan sintaktik dengan pengendali penggabungan. Sekatan ini tidak terpakai kepada fungsi terbina dalam yang disenaraikan di atas.

Fungsi mungkin memanggil antara satu sama lain dan mungkin rekursif. Parameter fungsi yang digunakan sebagai pembolehubah setempat diisytiharkan pada rentetan null dan nombor sifar atas panggilan fungsi.

Gunakan expr kembali untuk mengembalikan nilai dari fungsi. Nilai pulangan tidak ditentukan jika tiada nilai disediakan, atau jika fungsi kembali dengan `` jatuh '' akhir.

Jika - lint telah disediakan, gawk memberi amaran mengenai panggilan ke fungsi yang tidak ditentukan pada masa penghalaan , dan bukannya pada masa larian. Memanggil fungsi tidak jelas pada masa larian adalah ralat yang membawa maut.

Kata func boleh digunakan sebagai fungsi .

FUNGSI BARU MENYAMBUT

Bermula dengan versi 3.1 gawk , anda boleh menambahkan fungsi terbina dalam baru kepada jurubahasa gawang . Butiran lengkap berada di luar skop halaman panduan ini; lihat GAWK: Pemrograman AWK yang berkesan untuk butirannya.

lanjutan ( objek , fungsi )

Taipkan pautan fail objek bersama yang dinamakan oleh objek , dan panggil fungsi dalam objek itu, untuk melaksanakan inisialisasi. Ini hendaklah kedua-duanya diberikan sebagai tali. Mengembalikan nilai yang dikembalikan oleh fungsi .

Fungsi ini disediakan dan didokumentasikan dalam GAWK: Pemrograman Awk AWK , tetapi segala-galanya mengenai ciri ini mungkin akan berubah dalam pembebasan seterusnya. Kami SANGAT mengesyorkan agar anda tidak menggunakan ciri ini untuk apa-apa yang anda tidak mahu buat semula.

SIGNALS

pawk menerima dua isyarat. SIGUSR1 menyebabkan ia membuang profil dan fungsi stack panggilan ke fail profil, yang sama ada awkprof.out , atau apa sahaja fail bernama dengan --profil pilihan. Ia kemudian terus berjalan. SIGHUP menyebabkan ia membuang profil dan fungsi stack panggilan dan kemudian keluar.

CONTOH

Cetak dan semak nama login semua pengguna: BEGIN {FS = ":"} {print $ 1 | " semak "} Mengira baris dalam satu fail: {nlines ++} END {print nlines} Memperkenalkan setiap baris dengan nombornya dalam fail: {print FNR, $ 0} Concatenate and number line (variasi tema) $ 0}

Pengantarabangsaan

Peralihan rentetan adalah urutan aksara disertakan dalam petikan berganda. Dalam persekitaran bercakap bukan bahasa Inggeris, mungkin untuk menandakan rentetan dalam program AWK memandangkan terjemahan kepada bahasa semulajadi asli. Strings sebegini ditandakan dalam program AWK dengan tajuk utama (`` _ ''). Sebagai contoh,

gawk 'BEGIN {print "hello, world"}'

sentiasa mencetak hello, dunia . Tetapi,

gawk 'BEGIN {print _ "halo, dunia"}'

mungkin mencetak bonjour, monde di Perancis.

Terdapat beberapa langkah yang terlibat dalam menghasilkan dan menjalankan program AWK setempat.

1.

Tambah tindakan BEGIN untuk memberikan nilai kepada pembolehubah TEXTDOMAIN untuk menetapkan domain teks kepada nama yang berkaitan dengan program anda.


BEGIN {TEXTDOMAIN = "myprog"}

Ini membolehkan gawk untuk mencari fail .mo yang dikaitkan dengan program anda. Tanpa langkah ini, gawk menggunakan domain teks mesej , yang mungkin tidak mengandungi terjemahan untuk program anda.

2.

Tandakan semua rentetan yang perlu diterjemahkan dengan garis bawah yang terkemuka.

3.

Jika perlu, gunakan fungsi dcgettext () dan / atau bindtextdomain () dalam program anda, sesuai.

4.

Jalankan gawk --gen-po -f myprog.awk> myprog.po untuk menjana fail .po untuk program anda.

5.

Menyediakan penterjemahan yang sesuai, dan membina dan memasang fail .mo yang sepadan.

Ciri-ciri pengantarabangsaan diterangkan secara terperinci dalam GAWK: Pemrograman Awk AWK .

Keserasian Posix

Matlamat utama untuk gawk adalah keserasian dengan piawaian POSIX, serta versi terbaru UNIX. Untuk tujuan ini, gawk menggabungkan ciri-ciri yang kelihatan pengguna yang berikut yang tidak diterangkan dalam buku AWK, tetapi merupakan sebahagian daripada versi Laboratorium Bell, dan berada dalam piawaian POSIX.

Buku ini menunjukkan bahawa tugasan pembolehubah pembolehubah baris berlaku apabila awk sebaliknya akan membuka argumen sebagai fail, yang selepas blok BEGIN dilaksanakan. Walau bagaimanapun, dalam pelaksanaan yang lebih awal, apabila tugasan sedemikian muncul sebelum sebarang nama fail, tugasan akan berlaku sebelum blok BEGIN dijalankan. Aplikasi bergantung pada ciri `` ini. '' Apabila awk diubah untuk menyesuaikan dokumentasinya, pilihan -v untuk memberikan pembolehubah sebelum pelaksanaan program ditambah untuk menampung aplikasi yang bergantung pada tingkah laku lama. (Ciri ini telah dipersetujui oleh kedua-dua Laboratorium Bell dan pemaju GNU.)

Pilihan -W untuk melaksanakan ciri-ciri tertentu adalah dari piawaian POSIX.

Apabila memproses argumen, gawk menggunakan pilihan khas `` - '' untuk menandakan hujung hujah. Dalam mod keserasian, ia memberi amaran tetapi sebaliknya mengabaikan pilihan yang tidak ditentukan. Dalam operasi biasa, hujah-hujah tersebut diteruskan ke program AWK untuk diproses.

Buku AWK tidak menentukan nilai pulangan srand () . Piawaian POSIX telah mengembalikan benih yang ia gunakan, untuk membolehkan menjejaki urutan nombor rawak. Oleh itu srand () dalam gawk juga mengembalikan benih semasa.

Ciri baru yang lain adalah: Penggunaan pelbagai pilihan -f (dari MKS awk ); array ENVIRON ; the \ a , dan \ v melarikan diri urutan (dilakukan asalnya di gawk dan diberi makan kembali ke versi Bell Laboratories); fungsi tolower () dan toupper () terbina dalam (dari versi Bell Laboratories); dan spesifikasi penukaran ANSI C dalam printf (dilakukan terlebih dahulu dalam versi Bell Laboratories).

Ciri-ciri Sejarah

Terdapat dua ciri pelaksanaan AWK sejarah yang menyokongnya. Pertama, adalah mungkin untuk memanggil fungsi terbina dalam () yang terbina dalam bukan sahaja tanpa hujah, tetapi tanpa tanda kurung! Oleh itu,

a = panjang # Holy Algol 60, Batman!

adalah sama dengan sama ada

a = length ()
a = panjang ($ 0)

Ciri ini ditandakan sebagai `` diturunkan '' dalam piawaian POSIX, dan gawk mengeluarkan amaran tentang penggunaannya jika - setit ditentukan pada baris arahan.

Ciri lain ialah penggunaan sama ada sambungan atau kenyataan pecah di luar badan untuk sementara , untuk , atau melakukan gelung. Pelaksanaan AWK tradisional telah menganggap penggunaan sedemikian sebagai bersamaan dengan kenyataan seterusnya . Gawk menyokong penggunaan ini jika - telah ditetapkan.

Sambungan GNU

Gawk mempunyai beberapa sambungan ke POSIX awk . Mereka diterangkan dalam bahagian ini. Semua sambungan yang diterangkan di sini boleh dilumpuhkan dengan menggunakan soket dengan pilihan - pilihan.

Ciri-ciri gawang berikut tidak terdapat dalam POSIX awk .

*

Tiada carian jalan dilakukan untuk fail bernama melalui pilihan -f . Oleh itu pembolehubah persekitaran AWKPATH tidak istimewa.

*

The \ x escape sequence. (Dilumpuhkan dengan - lampiran .)

*

Fungsi fflush () . (Dilumpuhkan dengan - lampiran .)

*

Keupayaan untuk meneruskan barisan selepas ? dan :. (Dilumpuhkan dengan - lampiran .)

*

Pemalar Octal dan heksadesimal dalam program AWK.

*

Pembolehubah ARGIND , BINMODE , ERRNO , LINT , RT dan TEXTDOMAIN tidak istimewa.

*

Pemboleh ubah IGNORECASE dan kesan sampingannya tidak tersedia.

*

Pembolehubah FIELDWIDTHS dan pemisahan medan lebar tetap.

*

Arahan PROCINFO tidak tersedia.

*

Penggunaan RS sebagai ungkapan biasa.

*

Nama fail khas yang tersedia untuk pengalihan I / O tidak diiktiraf.

*

& | Operator untuk membuat proses bersama.

*

Keupayaan untuk memecah aksara individu menggunakan rentetan null sebagai nilai FS , dan sebagai hujah ketiga untuk berpecah () .

*

Hujah kedua pilihan untuk fungsi tutup () .

*

Hujah ketiga pilihan untuk perlawanan () berfungsi.

*

Keupayaan untuk menggunakan pendefinisian posisional dengan printf dan sprintf () .

*

Penggunaan array padam untuk memadam keseluruhan kandungan array.

*

Penggunaan fail seterusnya untuk meninggalkan pemprosesan fail input semasa.

*

Dan () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () () dan fungsi xor () .

*

Rentetan tempatan.

*

Menambah fungsi terbina dalam baru secara dinamik dengan fungsi lanjutan () .

Buku AWK tidak menentukan nilai pulangan fungsi tutup () . Gawk menutup () mengembalikan nilai dari fclose (3), atau pclose (3), apabila menutup fail output atau paip, masing-masing. Ia mengembalikan status keluar proses apabila menutup paip input. Nilai pulangan adalah -1 jika fail bernama, paip atau proses bersama tidak dibuka dengan pengalihan semula.

Apabila gawk dipanggil dengan pilihan - opsyen, jika argumen f kepada pilihan -F ialah `` t '', maka FS ditetapkan ke tab tab. Ambil perhatian bahawa menaip gawk -F \ t ... hanya menyebabkan shell memetik `` t, '', dan tidak lulus `` \ t '' kepada pilihan -F . Oleh kerana ini adalah kes khusus yang agak hodoh, itu bukan tingkah laku lalai. Tingkah laku ini juga tidak berlaku jika - lampiran telah ditentukan. Untuk benar-benar mendapatkan watak tab sebagai pemisah medan, sebaiknya gunakan sebut harga tunggal: gawk -F '\ t' ....

Lihat arahan lain : tunggu , lp , lengkap , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , free , lpr , execl , fdisk , pada , yang , iwconfig , ifconfig , vgdisplay , terbuka , lsmod , ntohs , mailq , kill , wtmp