Skip to main content

Gawk - Linux Command - Unix Command

Shell Basics - Read and Write to Files - Linux Tutorial #3 (Hunyo 2026)

Shell Basics - Read and Write to Files - Linux Tutorial #3 (Hunyo 2026)
Anonim

Pangalan

gawk - pattern sa pag-scan at pagpoproseso ng wika

Buod

gawk POSIX o mga pagpipilian sa estilo ng GNU -f program-file -- file …gawk POSIX o mga pagpipilian sa estilo ng GNU -- program-text file …

pgawk POSIX o mga pagpipilian sa estilo ng GNU -f program-file -- file …pgawk POSIX o mga pagpipilian sa estilo ng GNU -- program-text file …

Paglalarawan

Gawk ay ang pagpapatupad ng GNU Project ng AWK programming language. Sumasang-ayon ito sa kahulugan ng wika sa POSIX 1003.2 Command Language And Utilities Standard. Ang bersyon na ito naman ay batay sa paglalarawan sa Ang Wika ng Program sa AWK , sa pamamagitan ng Aho, Kernighan, at Weinberger, kasama ang karagdagang mga tampok na natagpuan sa System V Release 4 na bersyon ng UNIX awk . Gawk Nagbibigay din ang mas kamakailang Bell Laboratories awk mga extension, at isang bilang ng mga extension ng partikular na GNU.

Pgawk ay ang profiling na bersyon ng gawk . Ito ay katulad sa lahat ng paraan gawk , maliban na ang mga programa ay tumatakbo nang mas mabagal, at awtomatiko itong gumagawa ng isang pagpapatupad na profile sa file awkprof.out kapag tapos na. Tingnan ang --profile pagpipilian, sa ibaba.

Ang command line ay binubuo ng mga pagpipilian sa gawk mismo, ang teksto ng AWK program (kung hindi ibinibigay sa pamamagitan ng -f o - file mga opsyon), at mga halaga na magagamit sa ARGC at ARGV mga tinukoy na variable ng AWK.

Format ng Pagpipilian

Gawk ang mga opsyon ay maaaring alinman sa tradisyonal na POSIX isang opsyon sa sulat, o estilo ng GNU na mahahabang pagpipilian. Ang mga pagpipilian sa POSIX ay magsisimula sa isang `` - '', habang ang mga mahahabang pagpipilian ay nagsisimula sa `` - ''. Ang mga mahahalagang opsyon ay ibinibigay para sa parehong mga tampok na partikular sa GNU at para sa mga tampok na ipinag-utos ng POSIX.

Kasunod ng pamantayan ng POSIX, gawk Ang mga mapagpipiliang pagpipilian ay ibinibigay sa pamamagitan ng mga argumento sa -W pagpipilian. Maramihang -W ang mga pagpipilian ay maaaring maibigay sa bawat isa -W Ang opsyon ay may katumbas na mahahabang opsyon, tulad ng detalyado sa ibaba. Ang mga argumento sa mga mahahabang opsyon ay maaaring sumali sa opsyon sa pamamagitan ng isang = sign, na walang mga puwang sa pagitan, o maaaring sila ay ipagkaloob sa susunod na argumento ng command line. Ang mga mahahalagang opsyon ay maaaring pinaikli, hangga't ang pagdadaglat ay nananatiling kakaiba.

Mga Opsyon

Gawk tinatanggap ang mga sumusunod na opsyon, nakalista ayon sa alpabeto.

-F fs

- Field-separator fs Gamitin fs para sa input field separator (ang halaga ng FS paunang natukoy na variable).

-v var = val

--assign var = val Magtalaga ng halaga val sa variable var , bago magsimula ang pagpapatupad ng programa. Ang ganitong mga variable na halaga ay magagamit sa BEGIN block ng isang AWK program.

-f program-file

- file program-file Basahin ang pinagmulan ng AWK program mula sa file program-file , sa halip na mula sa unang argumento ng command line. Maramihang -f (o - file) Maaaring gamitin ang mga opsyon.

-mf NNN

-Ginoo NNN Magtakda ng iba't ibang mga limitasyon ng memorya sa halaga NNN . Ang f bandila ang nagtatakda ng maximum na bilang ng mga patlang, at ang r Ang bandila ay nagtatakda ng pinakamataas na laki ng record. Ang dalawang flag na ito at ang -m Ang opsyon ay mula sa bersyon ng pananaliksik ng Bell Laboratories ng UNIX awk . Hindi sila pinansin gawk , dahil gawk walang mga natukoy na limitasyon.

-W compat

-W tradisyonal

- kasama

--traditional Tumakbo sa compatibility mode. Sa mode na compatibility, gawk behaves identically sa UNIX awk ; wala sa mga extension ng GNU na tukoy na kinikilala. Ang gamit ng --traditional ay ginustong sa iba pang mga paraan ng pagpipiliang ito. Tingnan GNU EXTENSIONS, sa ibaba, para sa karagdagang impormasyon.

-W copyleft

-W copyright

--copyleft

- kopya ng copyright I-print ang maikling bersyon ng mensahe ng impormasyon ng copyright ng GNU sa karaniwang output at matagumpay na lumabas.

-W dump-variable= file

--dump-variable= file I-print ang isang pinagsunod-sunod na listahan ng mga pandaigdigang variable, ang kanilang mga uri at pangwakas na mga halaga sa file . Kung hindi file ay ibinigay, gawk gumagamit ng isang file na pinangalanan awkvars.out sa kasalukuyang direktoryo.

Ang pagkakaroon ng isang listahan ng lahat ng mga pandaigdigang variable ay isang mahusay na paraan upang maghanap ng mga typographical error sa iyong mga programa. Gagamitin mo rin ang pagpipiliang ito kung mayroon kang malaking programa na may maraming mga function, at nais mong tiyakin na ang iyong mga pag-andar ay hindi sinasadyang gumagamit ng mga pandaigdigang variable na iyong sinadya upang maging lokal. (Ito ay isang partikular na madaling pagkakamali upang gumawa ng mga simpleng mga pangalan ng variable tulad ng i, j, at iba pa.)

-W tulong

-W paggamit

- Tumulong

--usage I-print ang isang medyo maikling buod ng magagamit na mga opsyon sa karaniwang output. (Per GNU Coding Standards , ang mga pagpipilian na ito ay nagiging sanhi ng isang agarang, matagumpay na exit.)

-W lint= nakamamatay

--lint= nakamamatay Magbigay ng mga babala tungkol sa mga construct na kaduda-dudang o di-portable sa iba pang mga implementasyon ng IKAW. Gamit ang isang opsyonal na argumento ng nakamamatay, ang mga babala ng lint ay nagiging malalang mga pagkakamali. Maaaring ito ay marahas, ngunit ang paggamit nito ay tiyak na hinihikayat ang pagpapaunlad ng malinis na mga programang AWK.

-W lint-old

- lint-old Magbigay ng mga babala tungkol sa mga construct na hindi portable sa orihinal na bersyon ng Unix awk .

-W gen-po

--gen-po I-scan at i-parse ang programa ng AWK, at bumuo ng isang GNU .po format na file sa karaniwang output na may mga entry para sa lahat ng mga localizable na string sa programa. Ang programa mismo ay hindi pinaandar. Tingnan ang GNU gettext pamamahagi para sa karagdagang impormasyon sa .po mga file.

-W non-decimal-data

- non-decimal-data Kilalanin ang mga octal at hexadecimal na halaga sa data ng pag-input. Gamitin ang pagpipiliang ito nang may mahusay na pag-iingat!

-W posix

--posix Lumiliko ito compatibility mode, na may mga sumusunod na karagdagang mga paghihigpit:

*

x makatakas ang mga pagkakasunud-sunod.

*

Tanging espasyo at tab kumilos bilang mga field separators kung kailan FS ay naka-set sa isang solong espasyo, ang bagong linya ay hindi.

*

Hindi mo maaaring magpatuloy ang mga linya pagkatapos ? at :.

*

Ang kasingkahulugan func para sa keyword function ay hindi kinikilala.

*

Ang mga operator ** at **= ay hindi maaaring gamitin sa lugar ng ^ at ^=.

*

Ang fflush () Hindi magagamit ang pag-andar.

-W profile= prof_file

--profile= prof_file Ipadala ang data ng profile sa prof_file . Ang default ay awkprof.out. Kapag tumakbo kasama gawk , ang profile ay isang `` medyo nakalimbag '' na bersyon ng programa. Kapag tumakbo kasama pgawk , ang profile ay naglalaman ng mga bilang ng pagpapatupad ng bawat pahayag sa programa sa kaliwang margin at function na mga bilang ng tawag para sa bawat function na tinukoy ng gumagamit.

-W muli ang agwat

--re-pagitan Paganahin ang paggamit ng mga expression ng agwat sa regular na pagtutugma ng expression (tingnan Regular Expression, sa ibaba). Ang mga expression ng interval ay hindi ayon sa tradisyonal na magagamit sa wika ng AWK. Ang POSIX standard ay idinagdag sa kanila, upang gumawa awk at egrep pare-pareho sa bawat isa. Gayunman, ang kanilang paggamit ay malamang na masira ang mga lumang programa ng AWK, kaya gawk nagbibigay lamang sa kanila kung hiniling sila sa pagpipiliang ito, o kung kailan --posix ay tinukoy.

-W pinagmulan program-text

--source program-text Gamitin program-text bilang AWK program source code. Pinapayagan ng pagpipiliang ito ang madaling pagsasama ng mga function sa library (ginagamit sa pamamagitan ng -f at - file mga pagpipilian) sa source code na ipinasok sa command line. Ito ay inilaan lalo na para sa medium hanggang malalaking programa ng AWK na ginagamit sa mga script ng shell.

-W bersyon

- Pagbabago I-print ang impormasyon ng bersyon para sa partikular na kopya ng gawk sa karaniwang output. Ito ay kapaki-pakinabang para sa pangunahing kaalaman kung ang kasalukuyang kopya ng gawk sa iyong system ay napapanahon na may paggalang sa anumang ibinabahagi ng Free Software Foundation. Kapaki-pakinabang din ito kapag nag-uulat ng mga bug. (Per GNU Coding Standards , ang mga pagpipilian na ito ay nagiging sanhi ng isang agarang, matagumpay na exit.)

-- Signal ang dulo ng mga pagpipilian. Ito ay kapaki-pakinabang upang payagan ang karagdagang mga argumento sa AWK program mismo upang magsimula sa isang `` - ''. Ito ay higit sa lahat para sa pagkakapare-pareho sa kombensiyong pag-parse ng kombensyon na ginagamit ng karamihan sa iba pang mga programang POSIX.

Sa mode ng pagiging tugma, ang anumang iba pang mga pagpipilian ay na-flag bilang hindi wasto, ngunit kung hindi man ay hindi pinansin. Sa normal na operasyon, hangga't binigay ang teksto ng programa, ang mga di-alam na pagpipilian ay ipinapasa sa AWK program sa ARGV array para sa pagproseso. Ito ay partikular na kapaki-pakinabang para sa pagpapatakbo ng mga programa ng AWK sa pamamagitan ng mekanismo ng executable interpreter na `` #! '.

Pagpapatupad ng AWK PROGRAM

Ang isang AWK program ay binubuo ng isang pagkakasunud-sunod ng mga pahayag ng pattern-action at mga opsyonal na opsyonal na function.

pattern { mga pahayag ng pagkilos }function pangalan ( listahan ng parameter ) { pahayag }

Gawk unang binabasa ang pinagmulan ng programa mula sa program-file (s) kung tinukoy, mula sa mga argumento hanggang --source, o mula sa unang di-opsyon na argument sa command line. Ang -f at --source Ang mga opsyon ay maaaring gamitin nang maraming beses sa command line. Gawk nagbabasa ng teksto ng programa na parang lahat program-file s at mga command line source texts ay concatenated magkasama. Ito ay kapaki-pakinabang para sa mga gusali ng mga aklatan ng mga function ng AWK, nang hindi kinakailangang isama ang mga ito sa bawat bagong programa ng AWK na gumagamit ng mga ito. Nagbibigay din ito ng kakayahang paghaluin ang mga function ng library sa mga program ng command line.

Ang kapaligiran ay nagbabago AWKPATH tinutukoy ang isang path ng paghahanap na gagamitin kapag naghanap ng mga file ng pinagmulang pinangalanan sa -f pagpipilian. Kung hindi umiiral ang variable na ito, ang default path ay".: / usr / local / share / awk". (Maaaring mag-iba ang aktwal na direktoryo, depende sa kung paano gawk ay binuo at na-install.) Kung ang isang pangalan ng file na ibinigay sa -f Ang opsiyon ay naglalaman ng isang `` / '' na character, walang paghahanap sa landas ang gumanap.

Gawk Isinasagawa ang mga programa ng AWK sa sumusunod na order. Una, ang lahat ng mga takdang variable na tinukoy sa pamamagitan ng -v Ginagawa ang pagpipilian. Susunod, gawk Pinagsasama-sama ang programa sa isang panloob na form. Pagkatapos, gawk executes ang code sa BEGIN block (s) (kung mayroon man), at pagkatapos ay magpatuloy upang basahin ang bawat file na pinangalanan sa ARGV array. Kung walang mga file na pinangalanan sa command line, gawk nagbabasa ng karaniwang input.

Kung ang isang filename sa command line ay may form var = val ito ay ginagamot bilang isang variable assignment. Ang variable var ay bibigyan ng halaga val . (Nangyayari ito pagkatapos ng anuman BEGIN block (s) ay na-run.) Ang command line variable na assignment ay pinaka-kapaki-pakinabang para sa dynamic na pagtatalaga ng mga halaga sa mga variable na gumagamit ng AWK upang makontrol kung paano napasok ang mga input sa mga patlang at mga rekord. Kapaki-pakinabang din ito para sa pagkontrol ng estado kung maraming mga pagpasa ang kinakailangan sa isang solong file ng data.

Kung ang halaga ng isang partikular na elemento ng ARGV ay walang laman (''), gawk nilabasan ito.

Para sa bawat rekord sa input, gawk mga pagsubok upang makita kung ito ay tumutugma sa anumang pattern sa programa ng AWK. Para sa bawat pattern na tumutugma ang rekord, ang nauugnay aksyon ay pinaandar. Ang mga pattern ay sinubukan sa pagkakasunod-sunod na nagaganap sa programa.

Sa wakas, pagkatapos na maubos ang lahat ng input, gawk executes ang code sa END block (s) (kung mayroon man).

Variable, Records, at Fields

Ang mga variable ng AWK ay pabago-bago; sila ay nabubuhay kapag sila ay unang ginamit. Ang kanilang mga halaga ay alinman sa lumulutang-point na mga numero o mga string, o pareho, depende sa kung paano ginagamit ang mga ito. Ang AWK ay mayroon ding isang dimensional na arrays; Ang mga array na may maraming dimensyon ay maaaring kunwa. Ang ilang mga paunang natukoy na mga variable ay nakatakda bilang isang programa na nagpapatakbo; ang mga ito ay inilarawan bilang kinakailangan at summarized sa ibaba.

Mga rekord

Karaniwan, ang mga tala ay pinaghihiwalay ng mga bagong linya ng character. Maaari mong kontrolin kung paano pinaghihiwalay ang mga talaan sa pamamagitan ng pagtatalaga ng mga halaga sa built-in na variable RS. Kung RS ay anumang iisang karakter, ang character na ito ay naghihiwalay ng mga tala. Kung hindi man, RS ay isang regular na expression. Ang teksto sa input na tumutugma sa regular na expression na ito ay naghihiwalay sa talaan. Gayunpaman, sa mode ng pagkakatugma, tanging ang unang character ng string string nito ang ginagamit para sa paghihiwalay ng mga tala. Kung RS ay naka-set sa null string, pagkatapos ang mga talaan ay pinaghihiwalay ng mga blangko na linya. Kailan RS ay naka-set sa null string, ang newline character ay laging kumikilos bilang isang field separator, bilang karagdagan sa anumang halaga FS ay maaaring magkaroon ng.

Mga Patlang

Habang binabasa ang bawat talaan ng input, gawk nahati ang tala sa mga patlang , gamit ang halaga ng FS variable bilang field separator. Kung FS ay isang solong character, mga patlang ay pinaghiwalay ng character na iyon. Kung FS ay ang null string, kung gayon ang bawat indibidwal na karakter ay nagiging isang hiwalay na larangan. Kung hindi man, FS Inaasahang maging isang ganap na regular na expression. Sa espesyal na kaso na iyon FS ay isang solong espasyo, ang mga patlang ay pinaghihiwalay ng mga pagpapatakbo ng mga puwang at / o mga tab at / o mga bagong linya. (Ngunit tingnan ang talakayan ng --posix, sa ibaba). TANDAAN: Ang halaga ng IGNORECASE (tingnan sa ibaba) ay nakakaapekto rin kung paano nahahati ang mga patlang kapag FS ay isang regular na expression, at kung paano ang mga talaan ay hiwalay kapag RS ay isang regular na expression.

Kung ang FIELDWIDTHS Ang variable ay naka-set sa isang listahan ng mga pinaghiwalay na espasyo ng espasyo, ang bawat patlang ay inaasahan na magkaroon ng nakapirming lapad, at gawk hinati ang rekord gamit ang tinukoy na lapad. Ang halaga ng FS ay hindi pinansin. Pagtatalaga ng isang bagong halaga sa FS Sinasapawan ang paggamit ng FIELDWIDTHS, at ibabalik ang default na pag-uugali.

Ang bawat patlang sa rekord ng pag-input ay maaaring isinangguni ng posisyon nito, $1, $2, at iba pa. $0 ang buong tala. Ang mga patlang ay hindi dapat na isinangguni ng mga constants:

n = 5print $ n

print ang ikalimang patlang sa rekord ng input.

Ang variable NF ay nakatakda sa kabuuang bilang ng mga patlang sa rekord ng input.

Mga sanggunian sa mga di-umiiral na mga patlang (ibig sabihin, pagkatapos ng mga patlang $ NF) gumawa ng null-string. Gayunpaman, ang pagtatalaga sa isang hindi umiiral na larangan (hal., $ (NF + 2) = 5) ay nagdaragdag sa halaga ng NF, ay lumilikha ng anumang mga patlang na pumipihit sa null string bilang kanilang halaga, at nagiging sanhi ng halaga ng $0 upang ma-recomputed, na may mga patlang na pinaghihiwalay ng halaga ng OFS. Ang mga reference sa mga negatibong field na may bilang ay nagiging sanhi ng isang malalang error. Decrementing NF nagiging sanhi ng mga halaga ng mga patlang na nakalipas na ang bagong halaga ay mawawala, at ang halaga ng $0 upang ma-recomputed, na may mga patlang na pinaghihiwalay ng halaga ng OFS.

Ang pagtatalaga ng isang halaga sa isang umiiral na patlang ay nagiging sanhi ng buong rekord na itinayong muli kapag $0 ay isinangguni. Katulad nito, nagtatalaga ng halaga sa $0 nagiging sanhi ang rekord na maging resplit, paglikha ng mga bagong halaga para sa mga patlang.

Mga Built-in na Variable

Gawk Ang mga built-in na variable ay:

ARGC

Ang bilang ng mga argumento ng command line (hindi kasama ang mga opsyon sa gawk , o ang pinagmulan ng programa).

ARGIND

Ang index sa ARGV ng kasalukuyang file na naproseso.

ARGV

Array ng argumento ng command line. Ang array ay na-index mula 0 hanggang ARGC - 1. Dynamic na pagbabago ng mga nilalaman ng ARGV makokontrol ang mga file na ginagamit para sa data.

BINMODE

Sa mga di-POSIX na sistema, tumutukoy sa paggamit ng mode ng `` binary '' para sa lahat ng file na I / O. Ang mga numerong halaga ng 1, 2, o 3, ay tumutukoy na ang mga input file, output file, o lahat ng mga file, ayon sa pagkakabanggit, ay dapat gumamit ng binary I / O. Mga halaga ng string ng "r", o "w" tukuyin na ang mga input file, o output file, ayon sa pagkakabanggit, ay dapat gumamit ng binary I / O. Mga halaga ng string ng "rw" o "wr" tukuyin na ang lahat ng mga file ay dapat gumamit ng binary I / O. Ang anumang ibang halaga ng string ay itinuturing bilang "rw", ngunit bumubuo ng isang mensahe ng babala.

CONVFMT

Ang format ng conversion para sa mga numero, "% .6g", bilang default.

ENVIRON

Isang array na naglalaman ng mga halaga ng kasalukuyang kapaligiran. Ang array ay na-index ng mga variable sa kapaligiran, ang bawat elemento ay ang halaga ng variable na iyon (hal.,ENVIRON "HOME" maaaring / home / arnold). Ang pagpapalit ng array na ito ay hindi nakakaapekto sa kapaligiran na nakikita ng mga programa na gawk spawns sa pamamagitan ng pag-redirect o sa system ()function.

ERRNO

Kung ang isang error sa system ay nagaganap alinman sa paggawa ng redirection para sa getline, sa panahon ng nabasa para sa getline, o sa panahon ng isang malapit (), pagkatapos ERRNO maglalaman ng isang string na naglalarawan ng error. Ang halaga ay napapailalim sa pagsasalin sa mga hindi lokal na Ingles.

FIELDWIDTHS

Ang isang puting-espasyo na pinaghiwalay na listahan ng mga fieldwidth. Kapag naitakda, gawk binubura ang input sa mga patlang ng nakapirming lapad, sa halip na gamitin ang halaga ng FS variable bilang field separator.

FILENAME

Ang pangalan ng kasalukuyang input file.Kung walang mga file ay tinukoy sa command line, ang halaga ng FILENAME ay `` - ''. Gayunpaman, FILENAME ay hindi natukoy sa loob ng BEGIN harangan (maliban kung itinakda ng getline).

FNR

Ang input record number sa kasalukuyang input file.

FS

Ang input field separator, isang puwang sa pamamagitan ng default. Tingnan Mga Patlang, sa itaas.

IGNORECASE

Kinokontrol ang case-sensitivity ng lahat ng regular na expression at mga operasyon ng string. Kung IGNORECASE ay may di-zero na halaga, pagkatapos ay ang mga paghahambing ng string at pagtutugma ng pattern sa mga panuntunan, ang pagbubukas ng field FS, ang record na nakahiwalay sa RS, regular na tumutugma sa pagtutugma sa ~at !~, at ang gensub (), gsub (), index (), tugma (), split (), at sub () ang mga built-in na function ay huwag pansinin ang lahat kapag gumagawa ng mga regular na operasyon ng expression. TANDAAN: Array subscripting ay hindi apektado, o ang isang uri() function.

Kaya, kung IGNORECASE ay hindi katumbas ng zero, / aB / tumutugma sa lahat ng mga string "ab", "aB","Ab", at "AB". Tulad ng lahat ng AWK variable, ang unang halaga ng IGNORECASE ay zero, kaya ang lahat ng mga regular na expression at mga operasyon ng string ay karaniwang case-sensitive. Sa ilalim ng Unix, ang buong ISO 8859-1 Latin-1 character set ay ginagamit kapag hindi papansinin ang kaso.

LINT

Nagbibigay ng dynamic na kontrol ng --lint opsyon mula sa loob ng isang programa ng AWK. Kapag totoo, gawk print lint warnings. Kapag mali, hindi. Kapag nakatalaga ang halaga ng string "nakamamatay", ang mga babala ng lint ay nagiging mga nakamamatay na mga pagkakamali, eksakto tulad nito --lint = nakamamatay. Ang anumang iba pang tunay na halaga ay nag-i-print lamang ng mga babala.

NF

Ang bilang ng mga patlang sa kasalukuyang rekord ng pag-input.

NR

Ang kabuuang bilang ng mga talaan ng input ay nakikita sa ngayon.

OFMT

Ang format ng output para sa mga numero, "% .6g", bilang default.

OFS

Ang output field separator, isang puwang sa pamamagitan ng default.

ORS

Ang output separator record, sa pamamagitan ng default isang newline.

PROCINFO

Ang mga elemento ng array na ito ay nagbibigay ng access sa impormasyon tungkol sa pagpapatakbo ng AWK program. Sa ilang mga sistema, maaaring may mga elemento sa array, "group1" sa pamamagitan ng "grupo n ' para sa ilang n , na kung saan ay ang bilang ng mga karagdagang mga grupo na ang proseso ay may. Gamitin ang sa operator upang subukan para sa mga sangkap na ito. Ang mga sumusunod na elemento ay garantisadong magagamit:

PROCINFO "egid"

ang halaga ng getegid (2) sistema ng tawag.

PROCINFO "euid"

ang halaga ng geteuid (2) sistema ng tawag.

PROCINFO "FS"

"FS" kung ang patlang na malakas na may FS ay may bisa, o "FIELDWIDTHS" kung ang patlang na malakas na may FIELDWIDTHS ay may bisa.

PROCINFO "gid"

ang halaga ng getgid (2) sistema ng tawag.

PROCINFO "pgrpid"

ang process group ID ng kasalukuyang proseso.

PROCINFO "pid"

ang proseso ng ID ng kasalukuyang proseso.

PROCINFO "ppid"

ang proseso ng magulang ng ID ng kasalukuyang proseso.

PROCINFO "uid"

ang halaga ng getuid (2) sistema ng tawag.

RS

Ang input record separator, sa pamamagitan ng default isang newline.

RT

Ang terminator ng rekord. Gawk nagtatakda RT sa text input na tumutugma sa karakter o regular na expression na tinukoy ng RS.

RSTART

Ang index ng unang karakter na naitugma sa pamamagitan ng tugma (); 0 kung walang tugma. (Ipinapahiwatig nito na nagsisimula ang mga indeks ng character.)

RLENGTH

Ang haba ng string na naitugma sa pamamagitan ng tugma (); -1 kung walang tugma.

SUBSEP

Ang character na ginamit upang paghiwalayin ang maraming mga subscript sa mga elemento ng array, bilang default ' 034'.

TEXTDOMAIN

Ang domain ng teksto ng programa ng AWK; ginagamit upang mahanap ang naisalokal na mga pagsasalin para sa mga string ng programa.

Mga Arrays

Ang mga arrays ay naka-subscript sa isang expression sa pagitan ng mga square bracket ( at ). Kung ang expression ay isang listahan ng pagpapahayag ( expr , expr …) pagkatapos ang array subscript ay isang string na binubuo ng pagdudugtong ng (string) na halaga ng bawat expression, na pinaghiwalay ng halaga ng SUBSEP variable. Ang pasilidad na ito ay ginagamit upang gayahin ang multiply dimensioned arrays. Halimbawa:

i = "A"; j = "B"; k = "C"x i, j, k = "halo, mundo n"

nagtatalaga ng string "halo, mundo n" sa elemento ng array x na na-index ng string"A 034B 034C". Ang lahat ng mga arrays sa AWK ay nag-uugnay, i-index sa pamamagitan ng mga halaga ng string.

Ang espesyal na operator sa ay maaaring gamitin sa isang kung o habang pahayag upang makita kung ang isang array ay may index na binubuo ng isang partikular na halaga.

kung (val sa array) print array val

Kung ang array ay may maraming mga subscript, gamitin (i, j) sa array.

Ang sa ay maaaring magamit din sa isang para sa loop upang umulit sa lahat ng mga elemento ng isang array.

Ang isang elemento ay maaaring tanggalin mula sa isang array gamit ang tanggalin pahayag. Ang tanggalin Ang pahayag ay maaari ding gamitin upang tanggalin ang buong mga nilalaman ng isang array, sa pamamagitan lamang ng pagtukoy sa pangalan ng array nang walang isang subscript.

Variable Typing And Conversion

Ang mga variable at mga patlang ay maaaring (floating point) na mga numero, o mga string, o pareho. Kung paano ang kahulugan ng isang variable ay binibigyang-kahulugan depende sa konteksto nito. Kung ginamit sa isang numerong expression, ito ay itinuturing bilang isang numero, kung ginamit bilang isang string ito ay itinuturing bilang isang string.

Upang pilitin ang isang variable na tratuhin bilang isang numero, magdagdag ng 0 dito; upang pilitin itong isaalang-alang bilang isang string, idugtong ito sa null string.

Kapag ang isang string ay dapat na-convert sa isang numero, ang conversion ay nagagawa gamit strtod (3). Ang isang numero ay na-convert sa isang string sa pamamagitan ng paggamit ng halaga ng CONVFMT bilang isang format na string para sa sprintf (3), na may numerong halaga ng variable bilang argumento. Gayunpaman, kahit na ang lahat ng mga numero sa AWK ay lumulutang-point, ang mga mahalagang halaga ay laging convert bilang integers. Kaya, ibinigay

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

ang variable b ay may halaga ng string '12' at hindi '12.00'.

Gawk ay nagsasagawa ng mga paghahambing tulad ng sumusunod: Kung ang dalawang mga variable ay numeric, inihambing ito ayon sa bilang. Kung ang isang halaga ay numeric at ang iba ay may string na halaga na isang `` numeric string, '' at pagkatapos ay ang mga paghahambing ay tapos na rin ayon sa bilang. Kung hindi, ang numerong halaga ay na-convert sa isang string at isang paghahambing ng string ay ginanap. Dalawang mga string ay inihambing, siyempre, bilang mga string. Tandaan na ang standard na POSIX ay sumasaklaw sa konsepto ng `` numeric string '' sa lahat ng dako, kahit na sa constants ng string. Gayunpaman, maliwanag na mali ito, at gawk hindi ginagawa ito. (Sa kabutihang palad, ito ay naayos sa susunod na bersyon ng pamantayan.)

Tandaan na ang constants ng string, tulad ng '57', ay hindi Ang mga numerong string, ang mga ito ay constants string. Ang ideya ng `` numeric string '' ay nalalapat lamang sa mga patlang, getline input, FILENAME, ARGV mga elemento, ENVIRON mga elemento at mga elemento ng isang array na nilikha ng split () na mga numerong string. Ang pangunahing ideya ay iyon input ng gumagamit , at ang tanging input ng user, na mukhang numeric, ay dapat tratuhin sa ganoong paraan.

Ang mga hindi nabagong mga variable ay may numerong halaga 0 at ang halaga ng string "" (ang null, o walang laman, string).

Octal at Hexadecimal Constants

Simula sa bersyon 3.1 ng gawk, maaari kang gumamit ng C-style octal at hexadecimal constants sa iyong AWK program source code. Halimbawa, ang halaga ng oktal 011 ay katumbas ng decimal 9, at ang halaga ng hexadecimal 0x11 ay katumbas ng decimal 17.

String Constants

Ang mga string na constants sa AWK ay mga pagkakasunud-sunod ng mga character na nakapaloob sa pagitan ng double quotes ('). Sa loob ng mga string, tiyak makatakas pagkakasunud-sunod ay kinikilala, tulad ng sa C. Ang mga ito ay:

\

Isang literal na backslash.

a

Ang `` alerto '' na character; kadalasan ang karakter ng ASCII BEL.

b

backspace.

f

form-feed.

n

bagong linya.

r

bumalik ang karwahe.

t

pahalang na tab.

v

vertical na tab.

x hex digit

Ang karakter na kinakatawan ng string ng mga hexadecimal digit na sumusunod sa x. Tulad ng sa ANSIC, ang lahat ng mga sumusunod na mga hexadecimal digit ay itinuturing na bahagi ng pagkakasunod-sunod ng pagtakas. (Dapat sabihin sa amin ng tampok na ito ang tungkol sa disenyo ng wika ng komite.) Halimbawa, " x1B" ang ASCIIESC (escape) na character.

ddd

Ang karakter na kinakatawan ng 1-, 2, o 3-digit na pagkakasunod-sunod ng mga octal digit. Halimbawa, ' 033' ay ang ASCII ESC (escape) na character.

c

Ang literal na karakter c .

Ang mga pagkakasunod-sunod ng escape ay maaari ring gamitin sa loob ng mga palagiang regular na expression (hal.,/ t f n r v / tumutugma sa mga character na whitespace).

Sa mode ng pagiging tugma, ang mga character na kinakatawan ng mga octal at hexadecimal escape sequence ay ginagamot literal kapag ginamit sa regular na constants expression. Kaya, / a 52b / ay katumbas ng/ a * b /.

Mga Pattern at Pagkilos

Ang AWK ay isang wika na nakatuon sa linya. Ang pattern ay una, at pagkatapos ay ang aksyon. Ang mga pahayag ng aksyon ay nakapaloob sa { at }. Ang alinman sa pattern ay maaaring nawawala, o ang pagkilos ay maaaring nawawala, ngunit, siyempre, hindi pareho. Kung nawawala ang pattern, ang pagkilos ay isinasagawa para sa bawat solong talaan ng input. Ang nawawalang pagkilos ay katumbas ng

{print}

kung saan naka-print ang buong record.

Ang mga komento ay nagsisimula sa character na `` # '', at magpapatuloy hanggang sa katapusan ng linya. Ang mga blankong linya ay maaaring gamitin upang paghiwalayin ang mga pahayag. Karaniwan, ang isang pahayag ay nagtatapos sa isang bagong linya, gayunpaman, hindi ito ang kaso para sa mga linya na nagtatapos sa isang ``, '', {, ?, :, &&, o ||. Mga linya na nagtatapos sa gawin o iba pa ay mayroon ding kanilang mga pahayag na awtomatikong patuloy sa sumusunod na linya. Sa ibang mga kaso, ang isang linya ay maaaring ipagpatuloy sa pamamagitan ng pagtatapos nito sa isang ', kung saan ang bagong linya ay hindi papansinin.

Maramihang mga pahayag ay maaaring ilagay sa isang linya sa pamamagitan ng paghihiwalay ng mga ito sa isang ``; ''. Nalalapat ito sa parehong mga pahayag sa loob ng aksyon na bahagi ng isang pares ng pattern-action (ang karaniwang kaso), at sa mga pahayag ng pattern-action mismo.

Mga Pattern

Ang mga pattern ng AWK ay maaaring isa sa mga sumusunod:

BEGIN END / regular na expression / pamanggit na expression pattern && pattern pattern || pattern pattern ? pattern : pattern ( pattern ) ! pattern pattern1 , pattern2

BEGIN at END ay dalawang espesyal na uri ng mga pattern na hindi nasubok laban sa input. Ang mga bahagi ng aksyon ng lahat BEGIN ang mga pattern ay pinagsama na kung ang lahat ng mga pahayag ay nakasulat sa isang solong BEGIN harangan. Isinasagawa ang mga ito bago mabasa ang anumang input. Katulad nito, ang lahat END Ang mga bloke ay pinagsama, at isinasagawa kapag ang lahat ng input ay naubos na (o kapag ang isang lumabas pahayag ay naisakatuparan). BEGIN at END hindi maaaring isama ang mga pattern sa iba pang mga pattern sa mga expression ng pattern. BEGIN at END ang mga pattern ay hindi maaaring magkaroon ng mga nawawalang bahagi ng pagkilos.

Para sa / regular na expression / mga pattern, ang nauugnay na pahayag ay naisakatuparan para sa bawat talaan ng input na tumutugma sa regular na expression. Ang mga regular na expression ay pareho ng mga nasa egrep (1), at summarized sa ibaba.

A pamanggit na expression maaaring gamitin ang alinman sa mga operator na tinukoy sa ibaba sa seksyon sa mga aksyon. Ang mga ito sa pangkalahatan ay sumusubok kung ang ilang mga patlang ay tumutugma sa ilang mga regular na expression.

Ang &&, ||, at ! ang mga operator ay lohikal AT, lohikal O, at lohikal na HINDI, ayon sa pagkakabanggit, tulad ng sa C. Ginagawa nila ang pagsusuri ng maikling circuit, gayundin sa C, at ginagamit para sa pagsasama ng higit pang mga primitive na expression ng pattern. Tulad ng sa karamihan ng mga wika, ang mga panaklong ay maaaring gamitin upang baguhin ang pagkakasunud-sunod ng pagsusuri.

Ang ?: Ang operator ay katulad ng parehong operator sa C. Kung ang unang pattern ay totoo pagkatapos ang pattern na ginagamit para sa pagsubok ay ang pangalawang pattern, kung hindi man ito ang pangatlong. Isa lamang sa ikalawa at ikatlong pattern ang sinusuri.

Ang pattern1 , pattern2 Ang form ng isang expression ay tinatawag na a saklaw ng pattern . Ito ay tumutugma sa lahat ng mga tala ng input na nagsisimula sa isang tala na tumutugma pattern1 , at patuloy hanggang sa isang tala na tumutugma pattern2 , kasama. Hindi ito pagsamahin sa anumang iba pang uri ng pagpapahayag ng pattern.

Regular Expression

Ang regular na expression ay ang pinahabang uri na matatagpuan sa egrep . Ang mga ito ay binubuo ng mga character tulad ng sumusunod:

c

tumutugma sa di-metacharacter c .

c

tumutugma sa literal na karakter c .

.

tumutugma sa anumang karakter kabilang ang bagong linya.

^

tumutugma sa simula ng isang string.

$

tumutugma sa dulo ng isang string.

abc …

listahan ng character, tumutugma sa alinman sa mga character abc … .

^ abc …

Ang negatibong listahan ng character, tumutugma sa anumang karakter maliban abc … .

r1 | r2

Ang alternation: tumutugma sa alinman r1 o r2 .

r1r2

pagkakatugma: mga tugma r1 , at pagkatapos r2 .

r +

tumutugma sa isa o higit pa r 's.

r *

tumutugma sa zero o higit pa r 's.

r ?

tumutugma sa zero o isa r 's.

( r )

pagpapangkat: mga tugma r .

r { n }

r { n ,}

r { n , m } Ang isa o dalawang numero sa loob ng mga brace ay tumutukoy sa isang pagitan ng expression . Kung mayroong isang numero sa mga tirante, ang naunang regular na expression r ay paulit-ulit n beses. Kung mayroong dalawang numero na pinaghihiwalay ng kuwit, r ay paulit-ulit n sa m beses. Kung mayroong isang numero na sinusundan ng isang kuwit, pagkatapos r ay paulit-ulit n beses.

Available lamang ang mga expression ng pagitan kung alinman --posix o --re-pagitan ay tinukoy sa command line.

y

tumutugma sa walang laman na string sa simula o sa dulo ng isang salita.

B

tumutugma sa walang laman na string sa loob ng isang salita.

<

tumutugma sa walang laman na string sa simula ng isang salita.

>

tumutugma sa walang laman na string sa dulo ng isang salita.

w

tumutugma sa anumang karakter na salin sa salita (titik, digit, o salungguhit).

W

tumutugma sa anumang karakter na hindi taglay ng salita.

`

tumutugma sa walang laman na string sa simula ng isang buffer (string).

'

tumutugma sa walang laman na string sa dulo ng isang buffer.

Ang mga pagkakasunod-sunod na makatakas na wasto sa constants string (tingnan sa ibaba) ay may bisa din sa mga regular na expression.

Mga klase ng character ay isang bagong tampok na ipinakilala sa pamantayan ng POSIX. Ang isang klase ng character ay isang espesyal na notation para sa naglalarawan ng mga listahan ng mga character na may isang tiyak na katangian, ngunit kung saan ang aktwal na mga character sa kanilang sarili ay maaaring mag-iba mula sa bansa sa bansa at / o mula sa character set sa character set. Halimbawa, ang kuru-kuro ng kung ano ang isang alpabetikong karakter ay naiiba sa USA at sa France.

Ang isang klase ng character ay may bisa lamang sa isang regular na expression sa loob ang mga braket ng isang listahan ng character. Ang mga klase ng character ay binubuo ng :, isang keyword na nagpapahiwatig ng klase, at :. Ang mga klase ng character na tinukoy sa pamantayan ng POSIX ay:

: alnum:

Alphanumeric character.

: alpha:

Mga alpabetong character.

: blangko:

Mga character ng space o tab.

: cntrl:

Kontrolin ang mga character.

: digit:

Mga numerong character.

: graph:

Mga karakter na kapwa-print at nakikita. (Ang puwang ay maaaring i-print, ngunit hindi nakikita, habang ang isang a kapwa.)

: mas mababa:

Mga alpabetikong karakter sa lower case.

: print:

Napi-print na mga character (mga character na hindi kinokontrol ang mga character.)

: punct:

Mga simbolo ng punctuation (mga character na hindi titik, mga digit, mga character na kontrol, o mga character na espasyo).

:space:

Space character (tulad ng espasyo, tab, at formfeed, upang pangalanan ang ilan).

: itaas:

Mga alpabetikong character sa itaas na kaso.

: xdigit:

Mga character na hexadecimal digit.

Halimbawa, bago ang pamantayan ng POSIX, upang tumugma sa mga alphanumeric na character, kakailanganin mong magsulat / A-Za-z0-9 /. Kung ang iyong character set ay may iba pang mga alpabetikong character dito, hindi ito tumutugma sa mga ito, at kung ang iyong character ay nai-collated nang magkakaiba mula sa ASCII, hindi ito maaaring tumugma sa mga karakter sa alphanumeric ng ASCII. Sa klase ng POSIX na karakter, maaari mong isulat/ : alnum: /, at tumutugma ito sa alpabetikong at numerong mga character sa iyong character set.

Maaaring lumitaw ang dalawang karagdagang mga espesyal na pagkakasunod-sunod sa mga listahan ng character. Nalalapat ang mga ito sa mga set ng mga character na hindi ASCII, na maaaring magkaroon ng mga single symbol (tinatawag pag-collate ng mga elemento ) na kinakatawan na may higit sa isang character, pati na rin ang ilang mga character na katumbas para sa pag-collate , o paghihiwalay, mga layunin. (Hal., Sa wikang Pranses, isang plain `` e '' at isang libingan-accented e` ay katumbas.)

Mga Collating na Mga Simbolo

Ang isang collating na simbolo ay isang elemento ng collating ng maraming character na nakapaloob sa . at .. Halimbawa, kung ch ay isang collating elemento, pagkatapos .ch. ay isang regular na expression na tumutugma sa elemento ng collating na ito, habang ch ay isang regular na expression na tumutugma sa alinman c o h.

Pagkapantay-pantay na Mga Klase

Ang klase ng pagkapareho ay isang pangalan na tukoy sa locale para sa isang listahan ng mga character na katumbas. Ang pangalan ay nakapaloob sa = at =. Halimbawa, ang pangalan e ay maaaring gamitin upang kumatawan sa lahat ng `` e, '' `` e ',' 'at `` e`.' 'Sa kasong ito, = e = ay isang regular na expression na tumutugma sa anuman sa e, e ', o e`.

Ang mga tampok na ito ay napakahalaga sa mga lokal na hindi nagsasalita ng Ingles. Ang mga function ng library na gawk Ang paggamit para sa regular na pagtutugma sa pagpapahayag ay kasalukuyang kinikilala lamang ang mga klase ng POSIX na karakter; hindi nila kinikilala ang mga simbolo ng pag-collate o mga klase sa pagkapantay.

Ang y, B, <, >, w, W, `, at ' Ang mga operator ay tiyak sa gawk ; ang mga ito ay mga extension batay sa mga pasilidad sa mga regular na pampublikong expression ng GNU.

Ang iba't ibang mga pagpipilian sa command line ay nakokontrol kung paano gawk Binibigyang-kahulugan ng mga character ang mga regular na expression.

Walang mga pagpipilian

Sa default na kaso, gawk ibigay ang lahat ng mga kagamitan ng POSIX regular na expression at angGNU regular na mga operator ng ekspresyon na inilarawan sa itaas. Gayunpaman, ang mga expression sa pagitan ay hindi sinusuportahan.

--posix

Ang POSIX lamang na mga regular na expression ay sinusuportahan, ang mga operator ng GNU ay hindi espesyal. (Hal., w tumutugma sa literal w). Pinapayagan ang mga expression ng pagitan.

--traditional

Tradisyunal na Unix awk naitugma ang mga regular na expression. Ang mga operator ng GNU ay hindi espesyal, ang mga ekspresyon ng agwat ay hindi magagamit, at hindi rin ang mga klase ng POSIX character (: alnum: at iba pa). Ang mga character na inilarawan sa pamamagitan ng mga pagkakasunud-sunod ng octal at hexadecimal escape ay literal na itinuturing, kahit na ang mga ito ay kumakatawan sa mga regular na expression na metacharacters.

--re-pagitan

Payagan ang mga expression ng interval sa mga regular na expression, kahit na --traditional ay ibinigay.

Pagkilos

Ang mga pahayag ng pagkilos ay nakapaloob sa mga tirante, { at }. Ang mga pahayag ng pagkilos ay binubuo ng karaniwang takdang-aralin, kondisyon, at pang-loop na mga pahayag na matatagpuan sa karamihan ng mga wika. Ang mga operator, control statement, at mga pahayag ng input / output na magagamit ay naka-pattern pagkatapos ng mga nasa C.

Mga operator

Ang mga operator sa AWK, sa pagkakasunud-sunod ng pagbaba ng precedence, ay

()

Pagpapangkat

$

Reference ng patlang.

++ --

Pag-iipon at pag-decrement, parehong prefix at postfix.

^

Pagpapalago (** ay maaari ding gamitin, at **= para sa operator ng pagtatalaga).

+ - !

Unary plus, unary minus, at lohikal na negasyon.

* / %

Pagpaparami, paghahati, at modulus.

+ -

Pagdagdag at pagbawas.

space

String concatenation.

< >

<= >=

!= == Ang mga regular na operator sa pamanggit.

~ !~

Pagtutugma ng regular na expression, hindi tumutugma sa tugma. TANDAAN: Huwag gumamit ng palagiang regular na expression (/ foo /) sa kaliwang bahagi ng isang ~ o !~. Gumamit lamang ng isa sa kanang bahagi. Ang expression / foo / ~ exp ay may parehong kahulugan bilang (($ 0 ~ / foo /) ~ exp ). Ito ay karaniwang hindi ano ang nilayon.

sa

Pagiging miyembro ng Array.

&&

Lohikal AT.

||

Lohikal O.

?:

Ang conditional expression ng C. Ito ang form expr1 ? expr2 : expr3 . Kung expr1 Totoo, ang halaga ng pagpapahayag ay expr2 , kung hindi, ito ay expr3 . Isa lamang sa expr2 at expr3 ay sinusuri.

= += -=

*= /= %= ^= Pagtatalaga. Parehong absolutong assignment ( var = halaga ) at operator-assignment (ang iba pang mga form) ay suportado.

Mga Pahayag ng Pagkontrol

Ang mga kontrol na pahayag ay ang mga sumusunod:

kung ( kondisyon ) pahayag iba pa pahayag habang ( kondisyon ) pahayag gawin pahayag habang ( kondisyon ) para sa ( expr1 ; expr2 ; expr3 ) pahayag para sa ( var sa array ) pahayag pahinga magpatuloy tanggalin array index tanggalin array lumabas pagpapahayag { pahayag }

Mga Pahayag ng I / O

Ang mga pahayag ng input / output ay ang mga sumusunod:

malapit ( file , kung paano )

Isara ang file, pipe o co-process. Ang opsyonal kung paano ay dapat lamang gamitin kapag isinasara ang isang dulo ng isang dalawang-daan pipe sa isang co-proseso. Ito ay dapat na isang halaga ng string, alinman "sa" o "mula sa".

getline

Itakda $0 mula sa susunod na rekord ng pag-input; itakda NF, NR, FNR.

getline < file

Itakda $0 mula sa susunod na rekord ng file ; itakda NF.

getline var

Itakda var mula sa susunod na rekord ng pag-input; itakda NR, FNR.

getline var < file

Itakda var mula sa susunod na rekord ng file .

utos | getline var

Patakbuhin utos piping ang output alinman sa $0 o var , tulad ng nasa itaas.

utos | & getline var

Patakbuhin utos bilang isang co-proseso piping ang output alinman sa $0 o var , tulad ng nasa itaas. Ang mga co-proseso ay a gawk extension.

susunod

Itigil ang pagproseso ng kasalukuyang rekord ng pag-input. Ang susunod na rekord ng pag-input ay binabasa at ang pagproseso ay nagsisimula sa unang pattern sa programa ng AWK. Kung ang dulo ng input data ay naabot, ang END block (s), kung mayroon man, ay papatayin.

nextfile

Itigil ang pagproseso ng kasalukuyang input file. Ang susunod na rekord sa pag-record ng input ay mula sa susunod na input file. FILENAME at ARGIND ay na-update, FNR ay i-reset sa 1, at ang pagproseso ay nagsisimula sa unang pattern sa programa ng AWK. Kung ang dulo ng input data ay naabot, ang END block (s), kung mayroon man, ay papatayin.

print

Ini-print ang kasalukuyang rekord. Ang tala ng output ay tinapos na may halaga ng ORS variable.

print expr-list

Mga expression ng pag-print. Ang bawat pagpapahayag ay pinaghihiwalay ng halaga ng OFS variable. Ang tala ng output ay tinapos na may halaga ng ORS variable.

print expr-list > file

Mga expression ng pag-print sa file . Ang bawat pagpapahayag ay pinaghihiwalay ng halaga ng OFS variable. Ang tala ng output ay tinapos na may halaga ng ORS variable.

printf fmt, expr-list

Format at i-print.

printf fmt, expr-list > file

Format at i-print sa file .

sistema ( cmd-line )

Ipatupad ang utos cmd-line , at ibalik ang katayuan ng exit. (Maaaring hindi ito available sa mga sistemang hindi POSIX.)

fflush ( file )

I-flush ang anumang mga buffer na nauugnay sa bukas na output file o pipe file . Kung file ay nawawala, at pagkatapos ay karaniwang output ay flushed. Kung file ay ang null na string, pagkatapos ay ang lahat ng mga bukas na output file at pipa ay may mga buffers flushed.

Ang mga karagdagang redirections ng output ay pinapayagan para sa print at printf.

print … >> file

Nagdadagdag ng output sa file .

print … | utos

nagsusulat sa isang tubo.

print … | & utos

nagpapadala ng data sa isang co-proseso.

Ang getline Ang command ay nagbabalik ng 0 sa dulo ng file at -1 sa isang error. Sa isang error, ERRNO naglalaman ng isang string na naglalarawan ng problema.

TANDAAN: Kung gumagamit ng isang pipe o co-proseso sa getline, o mula sa print o printf sa loob ng isang loop, ikaw dapat gamitin malapit () upang lumikha ng mga bagong pagkakataon ng utos. Ang AWK ay hindi awtomatikong magsasara ng mga tubo o co-proseso kapag bumalik sila sa EOF.

Ang Pahayag ng printf

Ang mga bersyon ng AWK ng printf pahayag at sprintf () function (tingnan sa ibaba) tanggapin ang sumusunod na mga format ng pagtutukoy ng conversion:

% c

Isang ASCII na character. Kung ang argument na ginamit para sa % c ay numeric, ito ay ginagamot bilang isang character at naka-print. Kung hindi, ang argumento ay ipinapalagay na isang string, at ang tanging unang karakter ng string na iyon ay naka-print.

% d, % i

Isang decimal na numero (ang bahagi ng integer).

% e,% E

Isang floating point number ng form - d.dddddde + - dd. Ang % E paggamit ng format E sa halip ng e.

% f

Isang floating point number ng form - ddd.dddddd.

% g,% G

Gamitin % e o % f conversion, alinman ang mas maikli, na hindi pinahihintulutan ang zero na mga zero. Ang% G paggamit ng format % E sa halip ng % e.

% o

Isang unsigned number octal (din isang integer).

% u Isang unsigned decimal na numero (muli, isang integer).

% s

Isang character na string.

% x,% X

Isang unsigned hexadecimal number (isang integer). Ang % X paggamit ng format ABCDEF sa halip ngabcdef.

%%

Isang solong % character; walang argument na na-convert.

Opsyonal, ang mga karagdagang parameter ay maaaring nasa pagitan ng % at ang control letter:

bilangin $

Gamitin ang bilangin 'th argument sa puntong ito sa pag-format. Ito ay tinatawag na isang positional specifier at inilalayon lalo na para gamitin sa mga isinalin na bersyon ng mga string ng format, hindi sa orihinal na teksto ng isang programa ng AWK. Ito ay isang gawk extension.

-

Ang pananalita ay dapat na pakaliwa-nabibigyang-katwiran sa loob ng larangan nito.

space

Para sa mga numerong conversion, prefix positive values ​​na may espasyo, at negatibong mga halaga na may minus sign.

+

Ang plus sign, na ginamit bago ang lapad ng modifier (tingnan sa ibaba), ay nagsasabing laging nag-aalok ng isang senyas para sa mga numerong conversion, kahit na ang data na naka-format ay positibo. Ang + Sinasapawan ang space modifier.

#

Gumamit ng isang `` alternatibong form '' para sa ilang mga titik na kontrol. Para sa % o, magbigay ng isang nangungunang zero. Para sa % x, at % X, magbigay ng isang nangungunang 0x o 0x para sa isang resulta ng nonzero. Para sa % e, % E, at % f, ang resulta ay laging naglalaman ng decimal point. Para sa % g, at % G, ang mga sumusunod na zero ay hindi tinanggal mula sa resulta.

0

Isang nangungunang 0 (zero) ay gumaganap bilang isang bandila, na nagpapahiwatig ng output ay dapat na may palaman na may zeroes sa halip ng mga puwang. Nalalapat ito kahit na sa mga di-numerong mga format ng output. Ang bandang ito ay may epekto lamang kung ang lapad ng lapad ay mas malawak kaysa sa halaga na ipi-print.

lapad

Ang patlang ay dapat na may palaman sa lapad na ito. Ang patlang ay karaniwang may palaman na may mga puwang. Kung ang 0Ang bandila ay ginamit, ito ay may palaman na may mga zeroes.

. prec

Ang isang numero na tumutukoy sa katumpakan na gagamitin kapag nagpi-print. Para sa % e, % E, at % fmga format, tinutukoy nito ang bilang ng mga digit na nais mong i-print sa kanan ng decimal point. Para sa % g, at % G format, tinutukoy nito ang maximum na bilang ng mga makabuluhang digit. Para sa % d, % o, % i, % u, % x, at % X mga format, tinutukoy nito ang minimum na bilang ng mga digit upang i-print. Para sa % s, tinutukoy nito ang maximum na bilang ng mga character mula sa string na dapat na ipi-print.

Ang pabago-bago lapad at prec mga kakayahan ng ANSI C printf () sinusuportahan ang mga gawain. A * sa lugar ng alinman sa lapad o prec ang mga pagtutukoy ay nagiging sanhi ng kanilang mga halaga na kinuha mula sa listahan ng argumento sa printf o sprintf (). Upang gumamit ng positional specifier na may isang dynamic na lapad o katumpakan, ibigay ang bilangin $ pagkatapos ng * sa string na format. Halimbawa, "% 3 $ * 2 $. * 1 $ s".

Mga Espesyal na Pangalan ng File

Kapag gumagawa ng I / O redirection mula sa alinman print o printf sa isang file, o sa pamamagitan ng getline mula sa isang file, gawk kinikilala ang ilang mga espesyal na filename sa loob. Binibigyang-daan ng mga filename na ito ang pag-access upang mabuksan ang mga descriptor ng file na minana gawk Ang proseso ng magulang (kadalasan ang shell). Ang mga pangalan ng file na ito ay maaari ding gamitin sa command line upang mag-pangalan ng mga file ng data. Ang mga filename ay:

/ dev / stdin

Ang kara