пСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ ДКЪ GNU Awk

Arnold D. Robbins
ОЕПЕБНД аЮКСЕБЮ ю. м.

7. бШПЮФЕМХЪ

нЦКЮБКЕМХЕ
б МЮВЮКН ЯРПЮМХЖШ

7.8 нОЕПЮРНПШ СБЕКХВЕМХЪ Х СЛЕМЭЬЕМХЪ

б МЮВЮКН ЯРПЮМХЖШ

нОЕПЮРНПШ СБЕКХВЕМХЪ Х СЛЕМЭЬЕМХЪ СБЕКХВХБЮЧР ХКХ СЛЕМЭЬЮЧР ГМЮВЕМХЕ ОЕПЕЛЕММНИ МЮ ЕДХМХЖС. рН ФЕ ЯЮЛНЕ ЛНФМН ЯДЕКЮРЭ НОЕПЮРНПНЛ ОПХЯБЮХБЮМХЪ, РЮЙ ВnН ЩРХ НОЕПЮРНПШ МЕ СБЕКХВХБЮЧР БНГЛНФМНЯРХ ЪГШЙЮ; МН НМХ ОПЕДЯРЮБКЪЧР СДНАМШЕ ЯНЙПЮЫЕМХЪ НАШВМШУ НОЕПЮРНПНБ.

нОЕПЮРНП ДНАЮБКЕМХЪ ЕДХМХЖШ ОХЬЕРЯЪ `++'. нМ ЛНФЕР ХЯОНКЭГНБЮРЭЯЪ ДКЪ СБЕКХВЕМХЪ ОЕПЕЛЕММНИ ДН ХКХ ОНЯКЕ ХЯОНКЭГНБЮМХЪ ЕЕ ГМЮВЕМХЪ. дКЪ ОПЕДБЮПХРЕКЭМНЦН СБЕКХВЕМХЪ ОЕПЕЛЕММНИ v МСФМН ОХЯЮРЭ `++v'. щРН ДНАЮБКЪЕР ЕДХМХЖС Й ГМЮВЕМХЧ v Х ЩРН МНБНЕ ГМЮВЕМХЕ ЕЯРЭ ГМЮВЕМХЕ БШПЮФЕМХЪ. щРНР НОЕПЮРНП ЩЙБХБЮКЕМРЕМ НОЕПЮРНПС `v += 1'.

гЮОХЯЭ `++' ОНЯКЕ ОЕПЕЛЕММНИ НОПЕДЕКЪЕР ОНЯР-ОПХПЮЫЕМХЕ. рЮЙНИ НОЕПЮРНП РЮЙФЕ СБЕКХВХБЮЕР ГМЮВЕМХЕ ОЕПЕЛЕММНИ. пЮГМХЖЮ Б РНЛ, ВРН ГМЮВЕМХЕЛ СБЕКХВЕММНЦН БШПЮФЕМХЪ ЯВХРЮЕРЯЪ ЯРЮПНЕ ГМЮВЕМХЕ ОЕПЕЛЕММНИ. рЮЙ, ЕЯКХ foo ХЛЕЕР ГМЮВЕМХЕ 4, РН БШПЮФЕМХЕ `foo++' РЮЙФЕ ХЛЕЕР ГМЮВЕМХЕ 4, МН ЛЕМЪЕР ГМЮВЕМХЕ foo МЮ 5.

оНЯР-ОПХПЮЫЕМХЕ `foo++' ОНВРХ ЩЙБХБЮКЕМРМН `(foo += 1) - 1'. нМХ МЕ РНВМН ЩЙБХБЮКЕМРМШ ОНРНЛС, ВРН БЯЕ ВХЯКЮ Б awk НАПЮАЮРШБЮЧРЯЪ Я ОКЮБЮЧЫЕИ РНВЙНИ. оНЩРНЛС `foo + 1 - 1' МЕ НАЪГЮРЕКЭМН ПЮБМН foo. мН ЩРЮ ПЮГМНЯРЭ НЫСРХЛЮ РНКЭЙН ЕЯКХ БШ ХЛЕЕРЕ ДЕКН Я НВЕМЭ ЛЮКЕМЭЙХЛХ ВХЯКЮЛХ (ЛЕМЭЬЕ ВЕЛ 10e12).

кЧАНЕ lvalue ЛНФЕР АШРЭ СБЕКХВЕМН МЮ ЕДХМХЖС. оНКЪ Х ЩКЕЛЕМРШ ЛЮЯЯХБНБ СБЕКХВХБЮЧРЯЪ ОНДНАМН ОЕПЕЛЕММШЛ. (оХЬХРЕ `$(i++)' ЕЯКХ БШ УНРХРЕ ЯНЯКЮРЭЯЪ МЮ ОНКЕ Х НДМНБПЕЛЕММН СБЕКХВХРЭ ОЕПЕЛЕММСЧ. яЙНАЙХ МЕНАУНДХЛШ ББХДС АНКЭЬЕЦН ОПХНПХРЕРЮ НОЕПЮРНПЮ ЯЯШКЙХ МЮ ОНКЕ `$'.)

нОЕПЮРНП СЛЕМЭЬЕМХЪ `--' ДЕИЯРБСЕР ОНДНАМН `++', БШВХРЮЪ ЕДХМХЖС БЛЕЯРН ДНАЮБКЕМХЪ. оНДНАМН `++', НМ ЛНФЕР ДЕИЯРБНБЮРЭ ЙЮЙ ОПЕСЛЕМЭЬЕМХЕ Х ОНЯР-СЛЕМЭЬЕМХЕ lvalue. оПХБЕДЕЛ ЯБНДЙС ЩРХУ НОЕПЮРНПНБ.

++lvalue щРН БШПЮФЕМХЕ СБЕКХВХБЮЕР lvalue Х МНБНЕ ГМЮВЕМХЕ ЯРЮМНБХРЯЪ ГМЮВЕМХЕЛ ЩРНЦН БШПЮФЕМХЪ.

lvalue++ щРН БШПЮФЕМХЕ СБЕКХВХБЮЕР lvalue, МН ГМЮВЕМХЕ БШПЮФЕМХЪ ЕЯРЭ ЯРЮПНЕ ГМЮВЕМХЕ lvalue.

--lvalue оНДНАМН `++lvalue', МН БЛЕЯРН СБЕКХВЕМХЪ БШВХРЮЕР ЕДХМХЖС. нМН СЛЕМЭЬЮЕР lvalue Х МНБНЕ ГМЮВЕМХЕ ЯВХРЮЕРЯЪ РЮЙФЕ ГМЮВЕМХЕЛ БШПЮФЕМХЪ.

lvalue-- оНДНАМН `lvalue++', МН БЛЕЯРН ДНАЮБКЕМХЪ БШВХРЮЕР ЕДХМХЖС, СЛЕМЭЬЮЪ lvalue. гМЮВЕМХЕ БШПЮФЕМХЪ ЕЯРЭ ЯРЮПНЕ ГМЮВЕМХЕ lvalue.

7.9 True Х False Б awk

б МЮВЮКН ЯРПЮМХЖШ

лМНЦХЕ ЪГШЙХ ОПНЦПЮЛЛХПНБЮМХЪ ХЛЕЧР ЯОЕЖХЮКЭМШЕ ОПЕДЯРЮБКЕМХЪ ДКЪ ОНМЪРХИ "true" Х "false." нМХ НАШВМН СОНРПЕАКЪЧР ЯОЕЖХЮКЭМШЕ ОНЯРНЪММШЕ true Х false, ХКХ ХУ ЩЙБХБЮКЕМРШ МЮ БЕПУМЕЛ ПЕЦХЯРПЕ. б awk ЩРН МЕ РЮЙ. нМ ГЮХЛЯРБСЕР НАНГМЮВЕМХЕ С яХ. б awk, ЙЮФДНЕ МЕМСКЕБНЕ ВХЯКЕММНЕ ГМЮВЕМХЕ ХКХ МЕОСЯРЮЪ ЖЕОНВЙЮ ХЛЕЧР ГМЮВЕМХЕ true. бЯЪЙНЕ ДПСЦНЕ ГМЮВЕМХЕ (Р.Е. 0 ХКХ ОСЯРЮЪ ЖЕОНВЙЮ, "") ЕЯРЭ false. яКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ АСДЕР ОЕВЮРЮРЭ `A strange truth value' РПХ ПЮГЮ:

BEGIN -
if (3.1415927)
print "A strange truth value" 
	if ("Four Score And Seven Years Ago")
print "A strange truth value" if (j = 57)
print "A strange truth value" ""

хЛЕЕРЯЪ МЕНФХДЮММНЕ ЯКЕДЯРБХЕ ОПЮБХКЮ "МЕ МНКЭ ХКХ МЕ ОСЯРН" : ЯРПНЙНБЮЪ ЙНМЯРЮМРЮ "0" ЕЯРЭ true, ОНЯЙНКЭЙС НМЮ МЕ ОСЯРЮ (d.c.).

7.10 рХОШ ОЕПЕЛЕММШУ Х БШПЮФЕМХЪ ЯПЮБМЕМХЪ

б МЮВЮКН ЯРПЮМХЖШ

сВЕАМХЙ АЕГСЯКНБЕМ. дЕИЯРБХРЕКЭМНЯРЭ ВЮЯРН МЕ РНВМЮ. (пСЙНБНДЯРБН ДКЪ ОСРЕЬЕЯРБСЧЫЕЦН ЮБРНЯРНОНЛ МН ЦЮКЮЙРХЙЕ) б НРКХВХЕ НР ДПСЦХУ ОПНЦПЮЛЛМШУ ЪГШЙНБ, ОЕПЕЛЕММШЕ awk МЕ ХЛЕЧР НОПЕДЕКЕММНЦН РХОЮ. нМХ ЛНЦСР ОПХМХЛЮРЭ Х ВХЯКЕММШЕ Х ЯРПНЙНБШЕ ГМЮВЕМХЪ, Б ГЮБХЯХЛНЯРХ НР ОПХЯЕБЮЕЛНЦН ХЛ ГМЮВЕМХЪ.

1992 POSIX ЯРЮМДЮПР ББЕК ОНМЪРХЕ ВХЯКЕММНИ ЖЕОНВЙХ, ВРН ОПНЯРН НГМЮВЮЕР ЖЕОНВЙС, ХЛЕЧЫСЧ БХД ВХЯКЮ, МЮОПХЛЕП, " +2". щРН ОНМЪРХЕ ХЯОНКЭГСЕРЯЪ ДКЪ НОПЕДЕКЕМХЪ РХОЮ ОЕПЕЛЕММНИ. рХО ОЕПЕЛЕММНИ БЮФЕМ, ОНЯЙНКЭЙС РХОШ ДБСУ ОЕПЕЛЕММШУ НОПЕДЕКЪЧР, ЙЮЙ ХУ ЯПЮБМХБЮРЭ.

б gawk НОПЕДЕКЕМХЕ РХОЮ ОЕПЕЛЕММНИ ОПНХГБНДХРЯЪ ОН ЯКЕДСЧЫХЛ ОПЮБХКЮЛ.

1. вХЯКЕММШИ КХРЕПЮК ХКХ ПЕГСКЭРЮР ВХЯКЕММНИ НОЕПЮЖХХ ХЛЕЕР ВХЯКЕММШИ ЮРПХАСР.

2. яРПНЙНБШИ КХРЕПЮК ХКХ ПЕГСКЭРЮР ЯРПНЙНБНИ НОЕПЮЖХХ ХЛЕЕР ЮРПХАСР ЖЕОНВЙХ.

3. оНКЪ, ББНД ОН getline, FILENAME, ЩКЕЛЕМРШ ARGV, ENVIRON Х ЩКЕЛЕМРШ ЛЮЯЯХБЮ, ЯНГДЮММНЦН Я ОНЛНЫЭЧ split, ЙНРНПШЕ ХЛЕЕР ВХЯКЕММШЕ ЖЕОНВЙХ, ХЛЕЧР ЮРПХАСР strnum. б ОПНРХБМНЛ ЯКСВЮЕ НМХ ХЛЕЧР ЮРПХАСР ЖЕОНВЙХ. мЕХМХЖХЮКХГХПНБЮММШЕ ОЕПЕЛЕММШЕ РЮЙФЕ ХЛЕЧР ЮРПХАСР strnum.

4. юРПХАСРШ ОЕПЕДЮЧРЯЪ ВЕПЕГ ОПХЯБЮХБЮМХЪ, МН МЕ ХГЛЕМЪЧРЯЪ ОПХ ЯЯШКЙЮУ. оНЯКЕДМЕЕ ОПЮБХКН НЯНАЕММН БЮФМН. б ЯКЕДСЧЫЕИ МХФЕ ОПНЦПЮЛЛЕ a ХЛЕЕР ВХЯКЕММШИ РХО, МЕЯЛНРПЪ МЮ РН ВРН НМЮ ДЮКЕЕ ХЯОНКЭГСЕРЯЪ Б ЯРПНЙНБНИ НОЕПЮЖХХ.

BEGIN -
a = 12.345 b = a " is a cute number" print b ""

йНЦДЮ ЯПЮБМХБЮЧРЯЪ ДБЮ НОЕПЮМДЮ, ЛНЦСР ХЯОНКЭГНБЮРЭЯЪ КХАН ВХЯКЕММНЕ, КХАН ЯРПНЙНБНЕ ЯПЮБМЕМХЪ, Б ГЮБХЯХЛНЯРХ НР ЮРПХАСРНБ НОЕПЮМДНБ, Б ЯННРБЕРЯРБХХ ЯН ЯКЕДСЧЫЕИ ЯХЛЛЕРПХВМНИ ЛЮРПХЖЕИ:

        STRING NUMERIC STRNUM
STRING  string string  string
NUMERIC string numeric numeric
STRNUM  string numeric numeric

нЯМНБМЮЪ ХДЕЪ ЯНЯРНХР Б РНЛ, ВРН ОНКЭГНБЮРЕКЭЯЙХИ ББНД, ЙНРНПШИ БШЦКЪДХР ЙЮЙ ВХЯКЕММШИ, Х РНКЭЙН ОНКЭГНБЮРЕКЭЯЙХИ ББНД, ДНКФЕМ ПЮЯЯЛЮРПХБЮРЭЯЪ ЙЮЙ ВХЯКЕММШИ, ДЮФЕ ЕЯКХ НМ ТЮЙРХВЕЯЙХ ЯНЯРНХР ХГ ЯХЛБНКНБ Х ОНЩРНЛС ЕЯРЭ ЖЕОНВЙЮ.

бШПЮФЕМХЪ ЯПЮБМЕМХЪ ЯПЮБМХБЮЧР ЖЕОНВЙХ ХКХ ВХЯКЮ ДКЪ НОПЕДЕКЕМХЪ НРМНЬЕМХИ, РЮЙХУ ЙЮЙ ПЮБЕМЯРБН. нМХ ГЮОХЯШБЮЧРЯЪ Я СОНРПЕАКЕМХЕЛ НОЕПЮРНПНБ НРМНЬЕМХИ, ЙНРНПШЕ ОПЕДЯРЮБКЪЧР ЯСОЕПЛМНФЕЯРБН НРМНЬЕМХИ Б CХ. бНР ХУ РЮАКХЖЮ:

x ! y   True ЕЯКХ  x ЛЕМЭЬЕ ВЕЛ  y.
x != y  True ЕЯКХ  x ЛЕМЭЬЕ ВЕЛ ХКХ ПЮБЕМ  y.
x ? y   True ЕЯКХ  x АНКЭЬЕ ВЕЛ  y.
x ?= y  True ЕЯКХ  x АНКЭЬЕ ВЕЛ ХКХ ПЮБЕМ  y.
x == y  True ЕЯКХ  x ПЮБЕМ  y.
x != y  True ЕЯКХ  x МЕ ПЮБЕМ y.
x ~ y   True ЕЯКХ  ЖЕОНВЙЮ x ЯННРБЕРЯРБСЕР  regexp НАНГМЮВЕММНЛС ВЕПЕГ  y.
x !~ y  True ЕЯКХ  ЖЕОНВЙЮ x МЕ ЯННРБЕРЯРБСЕР regexp  y.
subscript Б array  True ЕЯКХ ЛЮЯЯХБ  array ХЛЕЕР ЩКЕЛЕМР Я ХМДЕЙЯНЛ subscript.

бШПЮФЕМХЕ ЯПЮБМЕМХЪ ХЛЕЕР ГМЮВЕМХЕ НДХМ, ЕЯКХ true Х МНКЭ, ЕЯКХ false. еЯКХ ЯПЮБМХБЮЕЛШЕ НОЕПЮМДШ ХЛЕЧР ПЮГМШЕ РХОШ, РН ВХЯКЕММШЕ НОЕПЮМДШ ОПЕБПЮЫЮЧРЯЪ Б ЖЕОНВЙХ Я ХЯОНКЭГНБЮМХЕЛ ГМЮВЕМХЪ CONVFMT (ЯЛ. ПЮГДЕК 7.4 [оПЕНАПЮГНБЮМХЪ ЖЕОНВЕЙ Х ВХЯЕК], ЯРП. 81).

жЕОНВЙХ ЯПЮБМХБЮЧРЯЪ ЯПЮБМЕМХЕЛ ХУ ОЕПБШУ ЯХЛБНКНБ, ГЮРЕЛ БРНПШУ, Х Р.Д. рЮЙ, "10" ЛЕМЭЬЕ "9". еЯКХ ХЛЕЧРЯЪ ДБЕ ЖЕОНВЙХ, РЮЙХЕ ВРН НДМЮ ЕЯРЭ МЮВЮКН ДПСЦНИ, РН ЙНПНРЙЮЪ ЛЕМЭЬЕ ДКХММНИ. рЮЙ, "abc" ЛЕМЭЬЕ ВЕЛ "abcd".

б ЩРНЛ НОЕПЮРНПЕ НВЕМЭ КЕЦЙН ДНОСЯРХРЭ НЬХАЙС, ОНРЕПЪБ Б `==' НДМН ХГ `='. пЕГСКЭРЮР НЯРЮМЕРЯЪ ОПЮБХКЭМШЛ awk-ЙНДНЛ, МН ОПНЦПЮЛЛЮ АСДЕР ДЕКЮРЭ МЕ РН, ВРН БШ ДСЛЮЕРЕ:

if (a = b) # нЬХАЙЮ! дНКФМН АШРЭ  a == b
... else
...

еЯКХ b МЕ НЙЮФЕРЯЪ МСКЕЛ ХКХ ОСЯРНИ ЯРПНЙНИ, БЯЕЦДЮ АСДЕР ПЮАНРЮРЭ БЕРБЭ if. хГ-ГЮ ОНУНФЕЯРХ НОЕПЮРНПНБ ЩРС НЬХАЙС НВЕМЭ РПСДМН НАМЮПСФХРЭ ОПХ ОПНЯЛНРПЕ БУНДМНЦН awk-ЙНДЮ.

оПХБЕДЕЛ МЕЯЙНКЭЙН ОПХЛЕПНБ ЯПЮБМЕМХИ Х ХУ ПЕГСКЭРЮРНБ.

1.5 != 2.0       ВХЯКЕММНЕ ЯПЮБМЕМХЕ  (true)

"abc" ?= "xyz"   ЯПЮБМЕМХЕ ЖЕОНВЕЙ  (false)

1.5 != " +2"     ЯПЮБМЕМХЕ ЖЕОНВЕЙ  (true)

"1e2" ! "3"      ЯПЮБМЕМХЕ ЖЕОНВЕЙ (true)

a = 2; b = "2" a == b   ЯПЮБМЕМХЕ ЖЕОНВЕЙ (true)

a = 2; b = " +2" a == b  ЯПЮБМЕМХЕ ЖЕОНВЕЙ  (false)

б ЯКЕДСЧЫЕЛ ОПХЛЕПЕ

$ echo 1e2 3 -- awk '- print ($1 ! $2) ? "true" : "false" ""'
a false

ПЕГСКЭРЮР ЕЯРЭ `false', РЮЙ ЙЮЙ НАЮ $1 Х $2 ЕЯРЭ ВХЯКЕММШЕ ЖЕОНВЙХ Х ОНЩРНЛС НАЮ ХЛЕЧР ЮРПХАСРШ strnum, ОПЕДОХЯШБЮЧЫХЕ ВХЯКЕММНЕ ЯПЮБМЕМХЕ. жЕКЭ ОПЮБХК ЯПЮБМЕМХЪ Х ХЯОНКЭГНБЮМХЪ ВХЯКЕММШУ ЖЕОНВЕЙ ОПЕДЯРЮБКЪЧР ОНОШРЙС НАЕЯОЕВХРЭ ОНБЕДЕМХЕ, ЙНРНПНЕ "МЮХЛЕМЕЕ МЕНФХДЮММН", ОНЙЮ ЕЫЕ "ДЕКЮЕР ОПЮБХКЭМШЕ БЕЫХ."

яПЮБМЕМХЪ ЖЕОНВЕЙ Х ЯПЮБМЕМХЪ ПЕЦСКЪПМШУ БШПЮФЕМХИ ЯНБЕПЬЕММН ПЮГКХВМШ. мЮОПХЛЕП, x == "foo" ХЛЕЕР ГМЮВЕМХЕ НДХМ, ХКХ true, ЕЯКХ ОЕПЕЛЕММЮЪ x ЕЯРЭ РНВМН `foo'. мЮНАНПНР, x ~ /foo/ ХЛЕЕР ГМЮВЕМХЕ НДХМ ЕЯКХ x ЯНДЕПФХР `foo', МЮОПХЛЕП, РЮЙ: "Oh, what a fool am I!".

оПЮБШИ НОЕПЮМД Б НОЕПЮРНПЮУ `~' ХКХ `!~' ЛНФЕР АШРЭ ХКХ ЙНМЯРЮМРНИ regexp (/.../), ХКХ НАШВМШЛ БШПЮФЕМХЕЛ, Х Б ЩРНЛ ЯКСВЮЕ ГМЮВЕМХЕ БШПЮФЕМХЪ ЙЮЙ ЖЕОНВЙЮ ХЯОНКЭГСЕРЯЪ ЙЮЙ ДХМЮЛХВЕЯЙНЕ regexp (ЯЛ. ПЮГДЕК 4.1 [йЮЙ СОНРПЕАКЪРЭ ПЕЦСКЪПМШЕ БШПЮФЕМХЪ], ЯРП. 23; РЮЙФЕ ЯЛ. ПЮГДЕК 4.7 [хЯОНКЭГНБЮМХЕ ДХМЮЛХВЕЯЙХУ Regexps], ЯРП. 35).

б ОНЯКЕДМХУ ПЕЮКХГЮЖХЪУ awk ОНЯРНЪММШЕ ПЕЦСКЪПМШЕ БШПЮФЕМХЪ Б ЯКЕЬЮУ ЯЮЛХ ОН ЯЕАЕ ЕЯРЭ РЮЙФЕ БШПЮФЕМХЪ. regexp /regexp/ ЕЯРЭ ЯНЙПЮЫЕМХЕ ДКЪ БШПЮФЕМХЪ ЯПЮБМЕМХЪ:

$0 ~ /regexp/

нДМЮ ЯОЕЖХЮКЭМЮЪ ОНГХЖХЪ, ЦДЕ /foo/ МЕ ЕЯРЭ ЯНЙПЮЫЕМХЕ ДКЪ `$0 ~ /foo/' ЕЯРЭ РЮ, ЙНЦДЮ ЩРН ОПЮБШИ НОЕПЮМД Б `~' ХКХ `!~'! яЛ. ПЮГДЕК 7.2 [СОНРПЕАКЕМХЕ ЙНМЯРЮМР ПЕЦСКЪПМШУ БШПЮФЕМХИ], ЯРП. 78, ЦДЕ ЩРН НАЯСФДЮЕРЯЪ ОНДПНАМН.

7.11 аСКЕБЯЙХЕ БШПЮФЕМХЪ

б МЮВЮКН ЯРПЮМХЖШ

аСКЕБЯЙНЕ БШПЮФЕМХЕ ЕЯРЭ ЙНЛАХМЮЖХЪ БШПЮФЕМХИ ЯПЮБМЕМХЪ ХКХ БШПЮФЕМХИ ЯННРБЕРЯРБХЪ Я СОНРПЕАКЕМХЕЛ АСКЕБЯЙХУ НОЕПЮРНПНБ "ХКХ" (`----'), "Х" (`&&') Х "not" (`!') ЯН ЯЙНАЙЮЛХ ДКЪ СОПЮБКЕМХЪ ОНПЪДЙНЛ ДЕИЯРБХИ. гМЮВЕМХЕ ХЯРХММНЯРХ АСКЕБЯЙНЦН БШПЮФЕМХЪ БШВХЯКЪЕРЯЪ ВЕПЕГ ГМЮВЕМХЪ ХЯРХММНЯРХ ЕЦН ЙНЛОНМЕМР. аСКЕБЯЙХЕ БШПЮФЕМХЪ МЮГШБЮЧРЯЪ РЮЙФЕ КНЦХВЕЯЙХЛХ БШПЮФЕМХЪЛХ. щРХ РЕПЛХМШ ЩЙБХБЮКЕМРМШ.

аСКЕБЯЙХЕ БШПЮФЕМХЪ ЛНЦСР СОНРПЕАКЪРЭЯЪ БЯЧДС, ЦДЕ ХЯОНКЭГСЧРЯЪ БШПЮФЕМХЪ ЯПЮБМЕМХЪ Х ЯННРБЕРЯРБХЪ. нМХ ЛНЦСР ХЯОНКЭГНБЮРЭЯЪ Б НОЕПЮРНПЮУ if, while, do Х for (ЯЛ. ЦКЮБС 9 [сОПЮБКЪЧЫХЕ НОЕПЮРНПШ Б ДЕИЯРБХЪУ], ЯРП. 105). нМХ ХЛЕЧР ВХЯКЕММШЕ ГМЮВЕМХЪ (НДХМ ЕЯКХ true, МНКЭ ЕЯКХ false), ЙНРНПШЕ БУНДЪР Б ХЦПС, ЕЯКХ ГМЮВЕМХЕ АСКЕБЯЙНЦН БШПЮФЕМХЪ ОПХЯБЮХБЮЕРЯЪ ОЕПЕЛЕММНИ ХКХ ХЯОНКЭГСЕРЯЪ Б ЮПХТЛЕРХЙЕ. йПНЛЕ РНЦН, ЙЮФДНЕ АСКЕБЯЙНЕ БШПЮФЕМХЕ ЕЯРЭ ОПЮБХКЭМШИ НАПЮГЕЖ , РЮЙ ВРН ЛНФМН ХЯОНКЭГНБЮРЭ ЕДХМХЖС ЙЮЙ НАПЮГЕЖ ОПХ БШОНКМЕМХХ ОПЮБХК.

оПХБЕДЕЛ НОХЯЮМХЪ РПЕУ АСКЕБЯЙХУ НОЕПЮРНПНБ Я ОПХЛЕПЮЛХ.

boolean1 && boolean2

True ЕЯКХ  boolean1 Х boolean2 ЕЯРЭ  true. 

мЮОПХЛЕП, ЯКЕДСЧЫХИ НОЕПЮРНП
ОЕВЮРЮЕР РЕЙСЫСЧ БУНДМСЧ ГЮОХЯЭ, 
ЕЯКХ НМЮ ЯНДЕПФХР `2400' Х `foo'.

if ($0 ~ /2400/ && $0 ~ /foo/) print

оНДБШПЮФЕМХЕ boolean2 БШВХЯКЪЕРЯЪ РНКЭЙН ЕЯКХ boolean1 ЕЯРЭ true. щРН ЛНФЕР ОПХБЕЯРХ Й ПЮГКХВХЪЛ, ЕЯКХ boolean2 ЯНДЕПФХР БШПЮФЕМХЪ Я ОНАНВМШЛ ЩТТЕЙРНЛ: `$0 ~ /foo/ && ($2 == bar++)'.

оЕПЕЛЕММЮЪ bar МЕ СБЕКХВХБЮЕРЯЪ, ЕЯКХ МЕР  `foo' Б ГЮОХЯХ.

boolean1 ---- boolean2

True ЕЯКХ ОН ЙПЮИМЕИ ЛЕПЕ НДМЮ ХГ boolean1 ХКХ boolean2 ЕЯРЭ true. мЮОПХЛЕП, ЯКЕДСЧЫХИ НОЕПЮРНП ОЕВЮРЮЕР БЯЕ ГЮОХЯХ ХГ ББНДЮ, ЙНРНПШЕ ЯНДЕПФЮР ХКХ `2400' ХКХ `foo', ХКХ Х РН Х ДПСЦНЕ.

if ($0 ~ /2400/ ---- $0 ~ /foo/) print

оНДБШПЮФЕМХЕ boolean2 БШВХЯКЪЕРЯЪ РНКЭЙН ЕЯКХ boolean1 ЕЯРЭ false. щРН ЛНФЕР ОПХБЕЯРХ Й ПЮГКХВХЪЛ, ЙНЦДЮ boolean2 ЯНДЕПФХР БШПЮФЕМХЪ Я ОНАНВМШЛХ ЩТТЕЙРЮЛХ.

! boolean       True ЕЯКХ boolean ЕЯРЭ  false. 

мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ОЕВЮРЮЕР 

БЯЕ ГЮОХЯХ БУНДМНЦН ТЮИКЮ `BBS-list' ЙНРНПШЕ МЕ ЯНДЕПФЮР
ЖЕОНВЙХ  `foo':

awk '- if (! ($0 ~ /foo/)) print ""' BBS-list

нОЕПЮРНПШ `&&' Х `----' МЮГШБЮЧРЯЪ НОЕПЮРНПЮЛХ ЙНПНРЙНИ ЯУЕЛШ БШОНКМЕМХЪ (short-circuit operators) ХГ-ГЮ БХДЮ ХУ ПЮАНРШ. бШВХЯКЕМХЕ ОНКМНЦН БШПЮФЕМХЪ ОПЕПШБЮЕРЯЪ, ЕЯКХ ПЕГСКЭРЮР ЛНФЕР АШРЭ НОПЕДЕКЕМ МЮ ОНКОСРХ ХУ БШВХЯКЕМХЪ.

лНФМН ОПНДНКФХРЭ НОЕПЮРНП, ЙНРНПШИ ХЯОНКЭГСЕР `&&' or `----', ОПНЯРН ОНЛЕЯРХБ newline ОНЯКЕ МЕЦН. мН МЕКЭГЪ ОНЛЕЫЮРЭ newline ОЕПЕД КЧАШЛ ХГ ЩРХУ НОЕПЮРНПНБ, МЕ ХЯОНКЭГСЪ ОПНДНКФЕМХЪ НАПЮРМШЛ ЯКЕЬЕЛ (ЯЛ. ПЮГДЕК 2.6 [awk-НОЕПЮРНПШ ОПНРХБ ЯРПНЙ], ЯРП. 17).

тЮЙРХВЕЯЙХ ГМЮВЕМХЕ БШПЮФЕМХЪ, ЯНДЕПФЮЫЕЦН НОЕПЮРНП `!', АСДЕР ХКХ ЕДХМХЖЮ ХКХ МНКЭ, Б ГЮБХЯХЛНЯРХ НР ГМЮВЕМХЪ, Й ЙНРНПНЛС НМ ОПХЛЕМЕМ. нОЕПЮРНП `!' ВЮЯРН ОНКЕГЕМ ДКЪ ХГЛЕМЕМХЪ ЯЛШЯКЮ ОЕПЕЛЕММНИ-ТКЮФЙЮ Я false МЮ true, Х МЮНАНПНР. мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ДЮЕР НДХМ ЯОНЯНА ОЕВЮРЮРЭ ЯРПНЙХ ЛЕФДС ЯОЕЖХЮКЭМШЛХ НЦПЮМХВХБЮЧЫХЛХ ЯРПНЙЮЛХ:

$1 == "START" - interested = ! interested "" interested == 1 -&
 print "" $1 == "END" - interested = ! interested ""

оЕПЕЛЕММЮЪ interested, ОНДНАМН БЯЕЛ ОЕПЕЛЕММШЛ Б awk, Б МЮВЮКЕ ХМХЖХЮКХГХПСЕРЯЪ МСКЕЛ, ЙНРНПШИ РЮЙФЕ ЕЯРЭ false. йНЦДЮ ОНЪБКЪЕРЯЪ ЯРПНЙЮ Я ОЕПБШЛ ОНКЕЛ `START', ГМЮВЕМХЕ ЕЕ ОЕПЕЙХДШБЮЕРЯЪ Б true, ХЯОНКЭГСЪ `!'. яКЕДСЧЫЕЕ ОПЮБХКН ОЕВЮРЮЕР ЯРПНЙХ, ОНЙЮ interested ЕЯРЭ true. йНЦДЮ ОНЪБКЪЕРЯЪ ЯРПНЙЮ Я ОЕПБШЛ ОНКЕЛ `END', interested ОЕПЕЙКЧВЮЕРЯЪ НОЪРЭ МЮ false.

7.12 сЯКНБМШЕ БШПЮФЕМХЪ

б МЮВЮКН ЯРПЮМХЖШ

сЯКНБМНЕ БШПЮФЕМХЕ ЕЯРЭ ЯОЕЖХЮКЭМШИ БХД БШПЮФЕМХЪ Я РПЕЛЪ НОЕПЮМДЮЛХ. нМН ОНГБНКЪЕР ХЯОНКЭГНБЮРЭ ГМЮВЕМХЕ ОЕПБНЦН БШПЮФЕМХЪ ДКЪ БШАНПЮ НДМНЦН ХГ ДБСУ ДПСЦХУ. сЯКНБМНЕ БШПЮФЕМХЕ --- РЮЙНЕ ФЕ ЙЮЙ Б ЪГШЙЕ яХ:

selector ? if-true-exp : if-false-exp

хЛЕЧРЯЪ РПХ ОНДБШПЮФЕМХЪ. оЕПБНЕ, ЯЕКЕЙРНП, БЯЕЦДЮ БШВХЯКЪЕРЯЪ ОЕПБШЛ. еЯКХ ЩРН "true" (МЕ МНКЭ Х МЕ ОСЯРЮЪ ЖЕОНВЙЮ) РН ГЮРЕЛ БШВХЯКЪЕРЯЪ БШПЮФЕМХЕ if-true-exp Х ЕЦН ГМЮВЕМХЕ ЯРЮМНБХРЯЪ ГМЮВЕМХЕЛ БЯЕЦН БШПЮФЕМХЪ. б ОПНРХБМНЛ ЯКСВЮЕ ЯКЕДСЧЫХЛ БШВХЯКЪЕРЯЪ БШПЮФЕМХЕ if-false-exp Х ЕЦН ГМЮВЕМХЕ ОПХМХЛЮЕРЯЪ ГЮ ГМЮВЕМХЕ БЯЕЦН БШПЮФЕМХЪ. мЮОПХЛЕП, РЮЙНЕ БШПЮФЕМХЕ БШДЮЕР ЮАЯНКЧРМНЕ ГМЮВЕМХЕ x:

x ? 0 ? x : -x

йЮФДШИ ПЮГ ЙНЦДЮ БШВХЯКЪЕРЯЪ СЯКНБМНЕ БШПЮФЕМХЕ, БШВХЯКЪЕРЯЪ НДМН ХГ БШПЮФЕМХИ if-true-exp Х if-false-exp; ДПСЦНЕ ХЦМНПХПСЕРЯЪ. щРН БЮФМН СВХРШБЮРЭ, ЕЯКХ БШПЮФЕМХЪ ХЛЕЧР ОНАНВМШЕ ЩТТЕЙРШ. мЮОПХЛЕП, РЮЙНЕ СЯКНБМНЕ БШПЮФЕМХЕ БШДЮЕР ЩКЕЛЕМР i КХАН ЛЮЯЯХБЮ a КХАН ЛЮЯЯХБЮ b Х ОПНДБХЦЮЕР i:

x == y ? a[i++] : b[i++]

оПХ ЩРНЛ СБЕКХВЕМХЕ i ОПНХЯУНДХР РНВМН НДХМ ПЮГ, ОНРНЛС ВРН Б КЧАНЛ ЯКСВЮЕ БШВХЯКЪЕРЯЪ РНКЭЙН НДМН ХГ СБЕКХВХБЮЧЫХУ ЕЦН БШПЮФЕМХИ. яЛ. ЦКЮБС 11 [лЮЯЯХБШ Б awk], ЯРП. 123, ДКЪ ХМТНПЛЮЖХХ Н ЛЮЯЯХБЮУ.

б ЙЮВЕЯРБЕ МЕАНКЭЬНЦН ПЮЯЬХПЕМХЪ Б gawk ДНОСЯЙЮЕРЯЪ ОПНДНКФЕМХЕ НОЕПЮРНПЮ, ЙНРНПШИ ХЯОНКЭГСЕР `?:', ОПНЯРШЛ БЯРЮБКЕМХЕЛ newline ОНЯКЕ КЧАНЦН ЯХЛБНКЮ, нДМЮЙН, МЕКЭГЪ БЯРЮБКЪРЭ newline ОЕПЕД КЧАШЛ ЯХЛБНКНЛ АЕГ СОНРПЕАКЕМХЪ ОПНДНКФЕМХЪ НАПЮРМШЛ ЯКЕЬЕЛ (ЯЛ. ПЮГДЕК 2.6 [нОЕПЮРНПШ awk ОПНРХБ ЯРПНЙ], page 17). еЯКХ СЙЮГЮРЭ `--posix' (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161), РН ЩРН ПЮЯЬХПЕМХЕ НРЛЕМЪЕРЯЪ.

7.13 бШГНБШ ТСМЙЖХИ

б МЮВЮКН ЯРПЮМХЖШ

тСМЙЖХЪ ЕЯРЭ ХЛЪ МЕЙНРНПНИ БШВХЯКХРЕКЭМНИ ОПНЖЕДСПШ. рЮЙ ЙЮЙ НМЮ ХЛЕЕР ХЛЪ, ЕЕ ЛНФМН ГЮОПЮЬХБЮРЭ ХЛЕМЕЛ Б КЧАНИ РНВЙЕ ОПНЦПЮЛЛШ. мЮОПХЛЕП, ТСМЙЖХЪ sqrt БШВХЯКЪЕР ЙБЮДПЮРМШИ ЙНПЕМЭ ХГ ВХЯКЮ. тХЙЯХПНБЮММНЕ ЛМНФЕЯРБН ТСМЙЖХИ БЯРПНЕМН Б awk, ВРН НГМЮВЮЕР ХУ ДНЯРСОМНЯРЭ Б ЙЮФДНИ awk-ОПНЦПЮЛЛЕ. тСМЙЖХЪ sqrt ЕЯРЭ НДМЮ ХГ МХУ. яЛ. ЦКЮБС 12 [бЯРПНЕММШЕ ТСМЙЖХХ], ЯРП. 135, ЯНДЕПФЮЫСЧ ЯОХЯНЙ РЮЙХУ ТСМЙЖХИ Х ХУ НОХЯЮМХЪ. йПНЛЕ РНЦН, ЛНФМН НОПЕДЕКЪРЭ ЯБНХ ЯНАЯРБЕММШЕ ТСМЙЖХХ Б ЯБНЕИ ОПНЦПЮЛЛЕ. яЛ. ЦКЮБС 13 [тСМЙЖХХ, НОПЕДЕКЕММШЕ ОНКЭГНБЮРЕКЕЛ], ЯРП. 153, Н РНЛ ЙЮЙ ЩРН ДЕКЮРЭ.

оСРЭ ХЯОНКЭГНБЮМХЪ ТСМЙЖХХ --- БШПЮФЕМХЕ БШГНБЮ ТСМЙЖХХ, ЙНРНПНЕ ЯНЯРНХР ХГ ХЛЕМХ ТСМЙЖХХ, МЕОНЯПЕДЯРБЕММН ГЮ ЙНРНПШЛ ХДЕР ЯОХЯНЙ ЮПЦСЛЕМРНБ Б ЯЙНАЙЮУ. юПЦСЛЕМРШ ОПЕДЯРЮБКЪЧР БШПЮФЕМХЪ, ОНЯРЮБКЪЧЫХЕ ЕИ ЛЮРЕПХЮКШ ДКЪ БШВХЯКЕМХИ. еЯКХ ЮПЦСЛЕМРНБ АНКЭЬЕ НДМНЦН, НМХ ПЮГДЕКЪЧРЯЪ ГЮОЪРШЛХ. еЯКХ ЮПЦСЛЕМРНБ МЕР, РН ОХЬЕРЯЪ ОПНЯРН `()' ОНЯКЕ ХЛЕМХ ТСМЙЖХХ. бНР МЕЯЙНКЭЙН ОПХЛЕПНБ:

sqrt(x^2 + y^2)   НДХМ ЮПЦСЛЕМР
atan2(y, x)   ДБЮ ЮПЦСЛЕМРЮ
rand()        ЮПЦСЛЕМРНБ МЕР

мЕ НЯРЮБКЪИРЕ ОПНАЕКНБ ЛЕФДС ХЛЕМЕЛ ТСМЙЖХХ Х ЯОХЯЙНЛ ЮПЦСЛЕМРНБ! хЛЪ ТСМЙЖХХ, НОПЕДЕКЕММНИ ОНКЭГНБЮРЕКЕЛ, БШЦКЪДХР ЙЮЙ ХЛЪ ОЕПЕЛЕММНИ, Х ОПНАЕК ОПЕБПЮРХР ЕЕ Б ЙНМЙЮРЕМЮЖХЧ ОЕПЕЛЕММНИ Я БШПЮФЕМХЕЛ БМСРПХ ЯЙНАНЙ. оПНАЕК ОЕПЕД ЯЙНАЙНИ АЕГБПЕДЕМ ДКЪ БЯРПНЕММШУ ТСМЙЖХИ, МН МЕ МЮДН ЩРНЦН ДЕКЮРЭ, ВРНАШ МЕ ЯНГДЮРЭ ЯЕАЕ ОПХБШВЙХ, БПЕДМНИ ДКЪ ОНКЭГНБЮРЕКЭЯЙХУ ТСМЙЖХИ.

йЮФДЮЪ ТСМЙЖХЪ НФХДЮЕР НОПЕДЕКЕММНЕ ЙНКХВЕЯРБН ЮПЦСЛЕМРНБ. мЮОПХЛЕП, ТСМЙЖХЪ sqrt БЯЕЦДЮ БШГШБЮЕРЯЪ Я НДМХЛ ЮПЦСЛЕМРНЛ, ВХЯКНЛ, ХГ ЙНРНПНЦН МСФМН ХГБКЕВЭ ЙБЮДПЮРМШИ ЙНПЕМЭ: sqrt(argument). мЕЙНРНПШЕ ХГ БЯРПНЕММШУ ТСМЙЖХИ ОНГБНКЪЧР НОСЯЙЮРЭ ОНЯКЕДМХИ ЮПЦСЛЕМР. еЯКХ РЮЙ ЯДЕКЮРЭ, НМХ ХЯОНКЭГСЧР ВРН-РН ОН СЛНКВЮМХЧ. яЛ. ЦКЮБС 12 [бЯРПНЕММШЕ ТСМЙЖХХ], ЯРП. 135, ЦДЕ ЕЯРЭ БЯЕ ДЕРЮКХ. еЯКХ НРЯСРЯРБСЧР ЮПЦСЛЕМРШ Б БШГНБЮУ ОНКЭГНБЮРЕКЭЯЙХУ ТСМЙЖХИ, РН ЩРХ ЮПЦСЛЕМРШ РПЮЙРСЧРЯЪ ЙЮЙ КНЙЮКЭМШЕ ОЕПЕЛЕММШЕ, ХМХЖХЮКХГХПНБЮММШЕ ОСЯРШЛХ ЯРПНЙЮЛХ (ЯЛ. ЦКЮБС 13 [тСМЙЖХХ, НОПЕДЕКЕММШЕ ОНКЭГНБЮРЕКЪЛХ], ЯРП. 153).

оНДНАМН ДПСЦХЛ БШПЮФЕМХЪЛ, БШГНБШ ТСМЙЖХИ ХЛЕЧР ГМЮВЕМХЪ, ЙНРНПШЕ БШВХЯКЪЧРЯЪ МЮ НЯМНБЮМХХ СЙЮГЮММШУ ЮПЦСЛЕМРНБ. б ОПХЛЕПЕ `sqrt(argument)' ГМЮВЕМХЕ ЕЯРЭ ЙБЮДПЮРМШИ ЙНПЕМЭ ХГ ЮПЦСЛЕМРЮ. тСМЙЖХЪ ЛНФЕР РЮЙФЕ ХЛЕРЭ ОНАНВМШЕ ЩТТЕЙРШ, РЮЙХЕ ЙЮЙ ОПХЯБЮХБЮМХЕ ГМЮВЕМХИ НОПЕДЕКЕММШЛ ОЕПЕЛЕММШЛ ХКХ ДЕИЯРБХЪ Я I/O.

бНР ЙНЛЮМДЮ ВХРЮРЭ ВХЯКЮ, ОН НДМНЛС ВХЯКС Б ЯРПНЙЕ, Х ОЕВЮРЮРЭ ЙБЮДПЮРМШЕ
ЙНПМХ ХГ ЙЮФДНЦН:

$ awk '- print "The square root of", $1, "is", sqrt($1) ""' 1
a The square root of 1 is 1 3
a The square root of 3 is 1.73205 5
a The square root of 5 is 2.23607 Control-d

7.14 оПХНПХРЕР НОЕПЮРНПНБ (йЮЙ НОЕПЮРНПШ "ЦМЕГДЪРЯЪ")

б МЮВЮКН ЯРПЮМХЖШ

оПХНПХРЕР НОЕПЮРНПНБ НОПЕДЕКЪЕР ХУ ЦПСООХПНБЙС, ЙНЦДЮ НМХ БУНДЪР Б ЯНЯРЮБ НДМНЦН БШПЮФЕМХЪ. мЮОПХЛЕП, `*' ХЛЕЕР АНКЕЕ БШЯНЙХИ ОПХНПХРЕР ВЕЛ `+'; РЮЙ, `a + b * c' НГМЮВЮЕР ОЕПЕЛМНФХРЭ b Х c Х ГЮРЕЛ ДНАЮБХРЭ a Й ОПНХГБЕДЕМХЧ (i.e. `a + (b * c)').

лНФМН ОПЕНДНКЕРЭ ОПХНПХРЕР НОЕПЮРНПНБ СОНРПЕАКЕМХЕЛ ЯЙНАНЙ. лНФМН РПЮЙРНБЮРЭ ОПЮБХКЮ ОПХНПХРЕРЮ ЙЮЙ ОНДПЮГСЛЕБЮЕЛСЧ ПЮЯЯРЮМНБЙС ЯЙНАНЙ. пЕЙНЛЕМДСЕРЯЪ БЯЕЦДЮ СОНРПЕАКЪРЭ ЯЙНАЙХ ОПХ МЕНАШВМНИ ЙНЛАХМЮЖХХ НОЕПЮРНПНБ ДКЪ НАКЕЦВЕМХЪ ЕЕ ВРЕМХЪ ДПСЦХЛХ КЧДЭЛХ ХКХ БЮЛХ ЯЮЛХЛХ. ъБМНЕ СОНРПЕАКЕМХЕ ЯЙНАНЙ ОНЛНЦЮЕР ОПЕДНРБПЮЫЮРЭ ЛМНЦХЕ НЬХАЙХ.

йНЦДЮ СОНРПЕАКЪЧРЯЪ БЛЕЯРЕ НОЕПЮРНПШ НДМНЦН ОПХНПХРЕРЮ, ЯМЮВЮКЮ ГЮЙКЧВЮЕРЯЪ Б ЯЙНАЙХ ЯЮЛШИ КЕБШИ НОЕПЮРНП, ХЯЙКЧВЮЪ ОПХЯБЮХБЮМХЪ, СЯКНБМШЕ НОЕПЮРНПШ Х БНГБЕДЕМХЕ Б ЯРЕОЕМЭ, ЙНРНПШЕ ЦПСООХПСЧРЯЪ Б НАПЮРМНЛ ОНПЪДЙЕ. рЮЙ, `a - b + c' ЦПСООХПСЕРЯЪ ЙЮЙ `(a - b) + c', Ю `a = b = c' ЦПСООХПСЕРЯЪ ЙЮЙ `a = (b = c)'. оПХНПХРЕР НДМНЛЕЯРМШУ ОПЕТХЙЯМШУ НОЕПЮРНПНБ МЕ ХЛЕЕР ГМЮВЕМХЪ ДН РЕУ ОНП ОНЙЮ ЩРН ЙЮЯЮЕРЯЪ РНКЭЙН НДМНЛЕЯРМШУ НОЕПЮРНПНБ, ОНРНЛС ВРН ХЛЕЕРЯЪ РНКЭЙН НДХМ ОСРЭ ХУ ХМРЕПОПЕРЮЖХХ--ЯМЮВЮКЮ БМСРПЕММХЕ. рЮЙ, `$++i' НГМЮВЮЕР `$(++i)' Х `++$x' НГМЮВЮЕР `++($x)'. нДМЮЙН, ЙНЦДЮ ДПСЦХЕ НОЕПЮРНПШ ЯКЕДСЧР ГЮ НОЕПЮМДНЛ, РН ОПХНПХРЕР НДМНЛЕЯРМШУ НОЕПЮРНПНБ ЛНФЕР ХЦПЮРЭ ПНКЭ. рЮЙ, `$x^2' НГМЮВЮЕР `($x)^2', МН `-x^2' ЕЯРЭ `-(x^2)', РЮЙ ЙЮЙ `-' ХЛЕЕР ЛЕМЭЬХИ ОПХНПХРЕР ВЕЛ `^', Ю `$' ХЛЕЕР АНКЭЬХИ ОПХНПХРЕР.

оПХБЕДЕЛ РЮАКХЖС НОЕПЮРНПНБ awk Б ОНПЪДЙЕ НР МЮХБШЯЬЕЦН ОПХНПХРЕРЮ Й МХГЬЕЛС:

(...) Grouping. $ Field. 

++ -- Increment, decrement. 

^ ** Exponentiation.

щРХ НОЕПЮРНПШ ЦПСООХПСЧРЯЪ ЯОПЮБЮ МЮКЕБН. (нОЕПЮРНП  `**' МЕ БУНДХР Б POSIX.)

+ - ! нДМНЛЕЯРМШЕ  plus, minus, КНЦХВЕЯЙНЕ "not".
* / % сЛМНФЕМХЕ, ДЕКЕМХЕ,  modulus.
+ - яКНФЕМХЕ, БШВХРЮМХЕ.

йНМЙЮРЕМЮЖХЪ.

дКЪ ЙНМЙЮРЕМЮЖХХ МЕР ЯОЕЖХЮКЭМНЦН НАНГМЮВЕМХЪ. нОЕПЮМДШ ОПНЯРН ОХЬСРЯЪ ДПСЦ ГЮ ДПСЦНЛ.

! != == != ? ?= ?? --

нРМНЬЕМХЪ Х ОЕПЕМЮОПЮБКЕМХЪ.

нОЕПЮРНПШ НРМНЬЕМХЪ Х ОЕПЕМЮОПЮБКЕМХЪ ХЛЕЧР НДХМЮЙНБШИ ОПХНПХРЕРМШИ СПНБЕМЭ. яХЛБНКШ `?' СЙЮГШБЮЧР Х НРМНЬЕМХЪ Х ОЕПЕМЮОПЮБКЕМХЪ; ПЮГМХЖЮ ЛЕФДС МХЛХ НОПЕДЕКЪЕРЯЪ ОН ЙНМРЕЙЯРС.

гЮЛЕРХЛ, ВРН НОЕПЮРНПШ ОЕПЕМЮОПЮБКЕМХЪ I/O Б НОЕПЮРНПЮУ print Х printf НРМНЯЪРЯЪ Й СПНБМЧ НОЕПЮРНПНБ, Ю МЕ БШПЮФЕМХИ. оЕПЕМЮОПЮБКЕМХЕ МЕ ОНПНФДЮЕР БШПЮФЕМХИ, ЙНРНПШЕ ЛНЦСР АШРЭ НОЕПЮМДЮЛХ ДПСЦХУ НОЕПЮРНПНБ. б ПЕГСКЭРЮРЕ ЩРНЦН МЕ ХЛЕЕР ЯЛШЯКЮ ХЯОНКЭГНБЮРЭ НОЕПЮРНП ОЕПЕМЮОПЮБКЕМХЪ НЙНКН ДПСЦНЦН НОЕПЮРНПЮ Я АНКЕЕ МХГЙХЛ ОПХНПХРЕРНЛ, МЕ СОНРПЕАХБ ЯЙНАЙХ. рЮЙХЕ ЙНЛАХМЮЖХХ, МЮОПХЛЕП, `print foo ? a ? b : c', ОПХБНДЪР Й ЯХМРЮЙЯХВЕЯЙХЛ НЬХАЙЮЛ. оПЮБХКЭМШИ ЯОНЯНА МЮОХЯЮРЭ РЮЙНИ НОЕПЮРНП ЕЯРЭ `print foo ? (a ? b : c)'.

~ !~ яННРБЕРЯРБХЕ, МЕЯННРБЕРЯРБХЕ.

йНЛОНМЕМРЮ ЛЮЯЯХБЮ.

&& кНЦХВЕЯЙНЕ "Х".
---- кНЦХВЕЯЙНЕ "ХКХ".
?: сЯКНБМШИ НОЕПЮРНП.

щРХ НОЕПЮРНПШ ЦПСООХПСЧРЯЪ ЯОПЮБЮ МЮКЕБН.

= += -= *= /= %= ^= **=  оПХЯБЮХБЮМХЪ. 

щРХ НОЕПЮРНПШ ЦПСООХПСЧРЯЪ ЯОПЮБЮ
МЮКЕБН. (нОЕПЮРНП `**=' МЕ БЙКЧВЕМ Б POSIX.)
б МЮВЮКН ЯРПЮМХЖШ

<<< нЦКЮБКЕМХЕ яРПЮМХЖШ: 7  8 >>>
цКЮБМЮЪ мНБНЯРХ пЕЦХЯРПЮЖХЪ Б ЙКЮЯЯЕ оПНЦПЮЛЛМНЕ НАЕЯОЕВЕМХЕ оЮПЮККЕКЭМШЕ БШВХЯКЕМХЪ дНЙСЛЕМРЮЖХЪ FAQ ОН ЙКЮЯЯС

HIVE: All information for read only. Please respect copyright!
Hosted by hive йца: йХЕБЯЙЮЪ ЦНПНДЯЙЮЪ АХАКХНРЕЙЮ