Ito ang command na original-awk na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
original-awk - pattern-directed scanning at processing language
SINOPSIS
orihinal-awk [ -F fs ] [ -v var=halaga ] [ 'prog' | -f progfile ] [ file ... ]
DESCRIPTION
Aba Ini-scan ng (orihinal-awk) ang bawat input file para sa mga linyang tumutugma sa alinman sa isang hanay ng mga pattern
literal na tinukoy sa prog o sa isa o higit pang mga file na tinukoy bilang -f progfile. Sa bawat isa
pattern ay maaaring may nauugnay na aksyon na isasagawa kapag ang isang linya ng a file
tumutugma sa pattern. Ang bawat linya ay tumutugma sa pattern na bahagi ng bawat pattern-
pahayag ng aksyon; ang nauugnay na aksyon ay ginagawa para sa bawat katugmang pattern. Ang file
pangalan - ibig sabihin ang karaniwang input. Anuman file ng anyo var=halaga ay itinuturing bilang isang
assignment, hindi isang filename, at isinasagawa sa oras na mabubuksan ito kung ito
ay isang filename. Ang pagpipilian -v sinundan ng var=halaga ay isang takdang-aralin na dapat gawin bago
prog ay naisakatuparan; anumang bilang ng -v ang mga pagpipilian ay maaaring naroroon. Ang -F fs ang opsyon ay tumutukoy sa
input field separator upang maging regular na expression fs.
Ang isang input line ay karaniwang binubuo ng mga field na pinaghihiwalay ng white space, o ng regular
pagpapahayag FS. Ang mga patlang ay tinutukoy $1, $2, ..., habang $0 tumutukoy sa buong linya.
If FS ay null, ang input line ay nahahati sa isang field bawat character.
May form ang isang pattern-action statement
huwaran { aksyon }
Isang nawawala { aksyon } ibig sabihin ay i-print ang linya; laging tumutugma ang isang nawawalang pattern. pattern-
ang mga pahayag ng aksyon ay pinaghihiwalay ng mga bagong linya o semicolon.
Ang aksyon ay isang pagkakasunod-sunod ng mga pahayag. Ang isang pahayag ay maaaring isa sa mga sumusunod:
kung( pagpapahayag ) pahayag [ iba pa pahayag ]
habang ( pagpapahayag ) pahayag
para sa( pagpapahayag ; pagpapahayag ; pagpapahayag ) pahayag
para sa( ay in ayos ) pahayag
do pahayag habang ( pagpapahayag )
masira
magpatuloy
{ [ pahayag ... ] }
pagpapahayag # karaniwan ay = pagpapahayag
i-print [ expression-list ] [ > pagpapahayag ]
printf format [ , expression-list ] [ > pagpapahayag ]
ibalik [ pagpapahayag ]
susunod na # laktawan ang natitirang mga pattern sa input line na ito
nextfile # laktawan ang natitirang bahagi ng file na ito, buksan ang susunod, magsimula sa itaas
alisin ayos[ pagpapahayag ]# magtanggal ng elemento ng array
alisin ayos # tanggalin ang lahat ng elemento ng array
lumabas [ pagpapahayag ] # exit kaagad; ang katayuan ay pagpapahayag
Ang mga pahayag ay winakasan sa pamamagitan ng semicolon, newlines o right braces. Isang walang laman pagpapahayag-
listahan ibig sabihin $0. Ang mga string constant ay sinipi " ", na may mga karaniwang C escape na kinikilala
sa loob ng. Ang mga expression ay gumagamit ng string o numeric na mga halaga kung naaangkop, at binuo gamit
ang mga operator + - * / % ^ (exponentiation), at concatenation (ipinahiwatig ng white space).
Ang mga operator ! ++ -- += -= *= /= %= ^= > >= < <= == != ?: ay magagamit din sa
mga ekspresyon. Ang mga variable ay maaaring mga scalar, array elements (denote x[i]) o mga patlang.
Ang mga variable ay sinisimulan sa null string. Ang mga array subscript ay maaaring anumang string, hindi
kinakailangang numero; nagbibigay-daan ito para sa isang anyo ng associative memory. Maramihang mga subscript
tulad ng [i,j,k] ay pinahihintulutan; ang mga nasasakupan ay pinagsama-sama, na pinaghihiwalay ng halaga
of SUBSEP.
Ang i-print Ini-print ng pahayag ang mga argumento nito sa karaniwang output (o sa isang file kung >file or
>>file ay naroroon o sa isang tubo kung |cmd ay naroroon), na pinaghihiwalay ng kasalukuyang field ng output
separator, at winakasan ng output record separator. file at cmd maaaring literal
mga pangalan o nakakulong na mga ekspresyon; Ang magkaparehong mga halaga ng string sa iba't ibang mga pahayag ay nagpapahiwatig
ang parehong bukas na file. Ang printf pormat ng pahayag ang listahan ng ekspresyon nito ayon sa
format (tingnan printf(3)). Ang built-in na function malapit na(ipahayag) isinasara ang file o pipe ipahayag.
Ang built-in na function flush(ipahayag) pinapa-flush ang anumang buffered na output para sa file o pipe ipahayag.
Ang mga pag-andar ng matematika exp, mag-log, sqrt, kasalanan, kos, at atan2 ay built in. Iba pang built-
sa mga function:
haba ang haba ng argumento nito na kinuha bilang isang string, o ng $0 kung walang argumento.
Rand random na numero sa (0,1)
srand nagtatakda ng binhi para sa Rand at ibinabalik ang dating binhi.
int pinuputol sa isang integer na halaga
substr(s, m, n)
ang n-character substring ng s na nagsisimula sa posisyon m binibilang mula 1.
index (s, t)
ang posisyon sa s kung saan ang string t nangyayari, o 0 kung hindi.
tugma(s, r)
ang posisyon sa s kung saan ang regular na expression r nangyayari, o 0 kung hindi. Ang
mga variable Magsimula at RLENGTH ay nakatakda sa posisyon at haba ng naitugma
string.
hati(s, a, fs)
hinahati ang string s sa mga elemento ng array a[1], a[2], ..., a[n], at nagbabalik n. ang
Ang paghihiwalay ay ginagawa gamit ang regular na expression fs o gamit ang field separator FS if
fs ay hindi binigay. Hinahati ng isang walang laman na string bilang field separator ang string sa isa
array elemento bawat karakter.
sub(r, t, s)
mga kapalit t para sa unang paglitaw ng regular na expression r sa tali s.
If s ay hindi ibinigay, $0 Ginagamit.
gsub katulad ng sub maliban na ang lahat ng paglitaw ng regular na expression ay pinalitan; sub
at gsub ibalik ang bilang ng mga kapalit.
sprintf (fmt, ipahayag, ... )
ang string na nagreresulta mula sa pag-format ipahayag ... ayon sa printf(3) pormat
fmt
sistema(cmd)
nagpapatupad cmd at ibinalik ang katayuan sa paglabas nito
babaan(STR)
nagbabalik ng kopya ng STR na may lahat ng malalaking titik na character na isinalin sa kanilang
katumbas na maliliit na titik.
topper(STR)
nagbabalik ng kopya ng STR na may lahat ng lower-case na character na isinalin sa kanilang
katumbas na upper-case na katumbas.
Ang ``function'' getline set $0 sa susunod na input record mula sa kasalukuyang input file;
getline <file set $0 sa susunod na record mula sa file. getline x nagtatakda ng variable x sa halip.
Sa wakas, cmd | getline pipe ang output ng cmd sa getline; bawat tawag ng getline Babalik
ang susunod na linya ng output mula sa cmd. Sa lahat ng pagkakataon, getline nagbabalik ng 1 para sa isang matagumpay na input,
0 para sa dulo ng file, at -1 para sa isang error.
Ang mga pattern ay mga di-makatwirang kumbinasyon ng Boolean (na may ! || &&) ng mga regular na expression at
mga relasyonal na ekspresyon. Ang mga regular na expression ay tulad ng sa egrep; tingnan grep(1). Nakahiwalay
ang mga regular na expression sa isang pattern ay nalalapat sa buong linya. Ang mga regular na expression ay maaari ding
mangyari sa mga relational na expression, gamit ang mga operator ~ at !~. /re/ ay isang pare-parehong regular
pagpapahayag; anumang string (constant o variable) ay maaaring gamitin bilang isang regular na expression, maliban
sa posisyon ng isang nakahiwalay na regular na expression sa isang pattern.
Ang isang pattern ay maaaring binubuo ng dalawang pattern na pinaghihiwalay ng kuwit; sa kasong ito, ang aksyon ay
ginanap para sa lahat ng mga linya mula sa isang paglitaw ng unang pattern kahit na isang paglitaw ng
ang ikalawa.
Ang relational expression ay isa sa mga sumusunod:
pagpapahayag matchop regular-expression
pagpapahayag relop pagpapahayag
pagpapahayag in array-name
(ipahayag,expr,...) in array-name
kung saan ang relop ay alinman sa anim na relational operator sa C, at ang matchop ay alinman ~
(mga tugma) o !~ (hindi tugma). Ang conditional ay isang arithmetic expression, isang relational
expression, o isang Boolean na kumbinasyon ng mga ito.
Ang mga espesyal na pattern BEGIN at END ay maaaring gamitin upang makuha ang kontrol bago ang unang input
binasa ang linya at pagkatapos ng huli. BEGIN at END huwag pagsamahin sa iba pang mga pattern.
Mga variable na pangalan na may mga espesyal na kahulugan:
CONVFMT
format ng conversion na ginagamit kapag nagko-convert ng mga numero (default %.6g)
FS regular na expression na ginagamit upang paghiwalayin ang mga patlang; din settable sa pamamagitan ng opsyon -Ffs.
NF bilang ng mga patlang sa kasalukuyang talaan
NR ordinal na numero ng kasalukuyang tala
FNR ordinal na numero ng kasalukuyang tala sa kasalukuyang file
FILENAME
ang pangalan ng kasalukuyang input file
RS input record separator (default na bagong linya)
FSO output field separator (default blangko)
ORS output record separator (default na bagong linya)
OFMT format ng output para sa mga numero (default %.6g)
SUBSEP naghihiwalay ng maramihang mga subscript (default 034)
ARGC bilang ng argumento, maaaring italaga
ARGV argument array, assignable; ang mga hindi null na miyembro ay kinukuha bilang mga filename
KAPALIGIRAN
hanay ng mga variable sa kapaligiran; ang mga subscript ay mga pangalan.
Maaaring tukuyin ang mga function (sa posisyon ng isang pattern-action statement) kaya:
tungkulin foo(a, b, c) { ...; pagbabalik x }
Ang mga parameter ay ipinapasa sa pamamagitan ng halaga kung scalar at sa pamamagitan ng sanggunian kung pangalan ng array; mga function ay maaaring
tinatawag na recursively. Ang mga parameter ay lokal sa function; lahat ng iba pang mga variable ay pandaigdigan.
Kaya ang mga lokal na variable ay maaaring malikha sa pamamagitan ng pagbibigay ng labis na mga parameter sa function
kahulugan.
HALIMBAWA
haba($0) > 72
Mag-print ng mga linya na mas mahaba sa 72 character.
{ print $2, $1 }
I-print ang unang dalawang field sa magkasalungat na pagkakasunud-sunod.
MAGSIMULA { FS = ",[ \t]*|[ \t]+" }
{ print $2, $1 }
Pareho, na may mga input field na pinaghihiwalay ng kuwit at/o mga blangko at tab.
{ s += $1 }
END { print "sum is", s, " average is", s/NR }
Magdagdag ng unang column, print sum at average.
/simula/, /stop/
I-print ang lahat ng linya sa pagitan ng mga pares ng pagsisimula/paghinto.
MAGSIMULA { # Gayahin miss(1)
para sa (i = 1; i < ARGC; i++) printf "%s ", ARGV[i]
printf "\ n"
labasan }
Gumamit ng orihinal na-awk online gamit ang mga serbisyo ng onworks.net