пСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ ДКЪ GNU Awk
9. сОПЮБКЪЧЫХЕ НОЕПЮРНПШ Б ДЕИЯРБХЪУнЦКЮБКЕМХЕ
сОПЮБКЪЧЫХЕ НОЕПЮРНПШ, РЮЙХЕ ЙЮЙ if, while, Х Р.Д., СОПЮБКЪЧР ОНПЪДЙНЛ БШОНКМЕМХЪ ВЮЯРЕИ awk-ОПНЦПЮЛЛ. аНКЭЬХМЯРБН СОПЮБКЪЧЫХУ НОЕПЮРНПНБ Б awk ОНУНФХ МЮ ОНДНАМШЕ НОЕПЮРНПШ Б яХ. бЯЕ НМХ МЮВХМЮЧРЯЪ ЯН ЯОЕЖХЮКЭМНЦН ЙКЧВЕБНЦН ЯКНБЮ, РЮЙНЦН ЙЮЙ if ХКХ while, БШДЕКЪЧЫЕЦН ХУ ЯПЕДХ ОПНЯРШУ БШПЮФЕМХИ. лМНЦХЕ СОПЮБКЪЧЫХЕ НОЕПЮРНПШ ЯНДЕПФЮР ДПСЦХЕ НОЕПЮРНПШ; МЮОПХЛЕП, НОЕПЮРНП if ЯНДЕПФХР ДПСЦНИ НОЕПЮРНП, ЙНРНПШИ ДНКФЕМ ХКХ МЕ ДНКФЕМ ХЯОНКМЪРЭЯЪ. яНДЕПФЮЫХИЯЪ НОЕПЮРНП МЮГШБЮЕРЯЪ РЕКНЛ. еЯКХ МСФМН БЙКЧВХРЭ Б РЕКН АНКЕЕ НДМНЦН НОЕПЮРНПЮ, ХУ МСФМН ЯЦПСООХПНБЮРЭ Б НДХМ ЯНЯРЮБМНИ НОЕПЮРНП Я ОНЛНЫЭЧ ТХЦСПМШУ ЯЙНАНЙ, ПЮГДЕКЪЪ ХУ ЯХЛБНКЮЛХ newlines ХКХ РНВЙЮЛХ Я ГЮОЪРНИ. 9.1 нОЕПЮРНП if-elseнОЕПЮРНП if-else ЕЯРЭ НОЕПЮРНП ОПХМЪРХЪ ПЕЬЕМХЪ Б awk. нМ БШЦКЪДХР РЮЙ: if (condition) then-РЕКН [else else-РЕКН]. condition ЕЯРЭ БШПЮФЕМХЕ, ЙНРНПНЕ НОПЕДЕКЪЕР ДЕИЯРБХЕ НЯРЮКЭМНИ ВЮЯРХ НОЕПЮРНПЮ. еЯКХ condition ХЛЕЕР ГМЮВЕМХЕ true, РН БШОНКМЪЕРЯЪ then-РЕКН; Б ОПНРХБМНЛ ЯКСВЮЕ БШОНКМЪЕРЯЪ else-РЕКН. вЮЯРЭ else ЛНФЕР НРЯСРЯРБНБЮРЭ. condition ЯВХРЮЕРЯЪ ХЛЕЧЫХЛ ГМЮВЕМХЕ false, ЕЯКХ НМН ПЮБМН МСКЧ ХКХ ОСЯРНИ ЖЕОНВЙЕ, Х true Б НЯРЮКЭМШУ ЯКСВЮЪУ. бНР ОПХЛЕП: if (x % 2 == 0) print "x is even" else print "x is odd" б ЩРНЛ ОПХЛЕПЕ, ЕЯКХ БШПЮФЕМХЕ `x % 2 == 0' ЕЯРЭ true (Р.Е. ГМЮВЕМХЕ x АЕГ НЯРЮРЙЮ ДЕКХРЯЪ МЮ ДБЮ), БШОНКМЪЕРЯЪ ОЕПБШИ НОЕПЮРНП print, Б ОПНРХБМНЛ ЯКСВЮЕ БШОНКМЪЕРЯЪ БРНПНИ print. еЯКХ else ЯРНХР Б РНИ ФЕ ЯЮЛНИ ЯРПНЙЕ, ВРН Х then-РЕКН Х then-РЕКН МЕ ЕЯРЭ ЯНЯРЮБМНИ НОЕПЮРНП (Р.e. МЕ ГЮЙКЧВЕМН Б ТХЦСПМШЕ ЯЙНАЙХ), РН РНВЙЮ Я ГЮОЪРНИ ДНКФМЮ НРДЕКЪРЭ then-РЕКН НР else. вРНАШ ОПНХККЧЯРПХПНБЮРЭ ЩРН, ОЕПЕОХЬЕЛ ОПЕДШДСЫХИ ОПХЛЕП: if (x % 2 == 0) print "x is even"; else print "x is odd" еЯКХ БШ ГЮАСДЕРЕ МЮОХЯЮРЭ `;', awk МЕ ЯЛНФЕР ХМРЕПОПЕРХПНБЮРЭ НОЕПЮРНП Х СЙЮФЕР ЯХМРЮЙЯХВЕЯЙСЧ НЬХАЙС. лШ МЕ ДНКФМШ АШКХ МЮ ЯЮЛНЛ ДЕКЕ ОХЯЮРЭ Б РЮЙНЛ БХДЕ ЩРНР ОПХЛЕП, ОНРНЛС ВРН ВХРЮРЕКЭ-ВЕКНБЕЙ ЛНФЕР МЕ ГЮЛЕРХРЭ else, ЕЯКХ НМН МЕ ЯРНХР Б МЮВЮКЕ ЯБНЕИ ЯРПНЙХ. 9.2 нОЕПЮРНП whileб ОПНЦПЮЛЛХПНБЮМХХ ЖХЙКНЛ МЮГШБЮЕРЯЪ ВЮЯРЭ ОПНЦПЮЛЛШ, ЙНРНПЮЪ ЛНФЕР ХЯОНКМЪРЭЯЪ ОНЯКЕДНБЮРЕКЭМН ДБЮ ХКХ АНКЕЕ ПЮГ. нОЕПЮРНП while ОПЕДЯРЮБКЪЕР ОПНЯРЕИЬХИ ЖХЙКХВЕЯЙХИ НОЕПЮРНП Б awk. нМ ОНБРНПЪЕР БШОНКМЕМХЕ МЕЙНРНПНЦН НОЕПЮРНПЮ, ОНЙЮ СЯКНБХЕ ЯНУПЮМЪЕР ГМЮВЕМХЕ true. бШЦКЪДХР НМ РЮЙ: while (condition) body гДЕЯЭ body НГМЮВЮЕР НОЕПЮРНП, ЙНРНПШИ ЛШ МЮГШБЮЕЛ РЕКНЛ ЖХЙКЮ, Ю condition ЕЯРЭ БШПЮФЕМХЕ, ЙНРНПНЕ СОПЮБКЪЕР ДКХРЕКЭМНЯРЭЧ ОНБРНПЕМХЪ РЕКЮ. оЕПБНЕ, ВРН ДЕКЮЕР НОЕПЮРНП while, ЕЯРЭ БШВХЯКЕМХЕ condition. еЯКХ condition ХЛЕЕР ГМЮВЕМХЕ true, БШОНКМЪЕРЯЪ НОЕПЮРНП body. оНЯКЕ ЩРНЦН НОЪРЭ ОПНБЕПЪЕРЯЪ condition Х ЕЯКХ НМН БЯЕ ЕЫЕ ХЛЕЕР ГМЮВЕМХЕ true, НОЕПЮРНП body БШОНКМЪЕРЯЪ ЯМНБЮ. щРНР ОПНЖЕЯЯ ОПНДНКФЮЕРЯЪ, ОНЙЮ condition ХЛЕЕР ГМЮВЕМХЕ true. еЯКХ condition ХГМЮВЮКЭМН ХЛЕЕР ГМЮВЕМХЕ false, РН РЕКН ЖХЙКЮ МЕ БШОНКМЪЕРЯЪ МХ НДМНЦН ПЮГЮ Х awk ОПНДНКФЮЕР ПЮАНРС Я НОЕПЮРНПЮ, ЯКЕДСЧЫЕЦН ГЮ ЖХЙКНЛ. яКЕДСЧЫХИ ОПХЛЕП ОЕВЮРЮЕР ОЕПБШЕ РПХ ОНКЪ ЙЮФДНИ ГЮОХЯХ, ОН НДМНЛС Б ЯРПНЙЕ. awk '- i = 1 while (i != 3) - print $i i++ "" ""' inventory-shipped гДЕЯЭ РЕКН ЖХЙКЮ ЕЯРЭ ЯНЯРЮБМНИ НОЕПЮРНП, ГЮЙКЧВЕММШИ Б ЯЙНАЙХ, ЯНДЕПФЮЫХИ ДБЮ НОЕПЮРНПЮ. жХЙК ПЮАНРЮЕР ЯКЕДСЧЫХЛ НАПЮГНЛ: ЯМЮВЮКЮ ОЕПЕЛЕММНИ i ОПХЯБЮХБЮЕРЯЪ ГМЮВЕМХЕ 1. гЮРЕЛ while ОПНБЕПЪЕР, БЕПМН КХ ВРН i ЛЕМЭЬЕ ХКХ ПЮБМН РПЕЛ. щРН БЕПМН ОПХ i ПЮБМНЛ ЕДХМХЖЕ, РЮЙ ВРН ОЕВЮРЮЕРЯЪ i-Е ОНКЕ. гЮРЕЛ `i++' СБЕКХВХБЮЕР ГМЮВЕМХЕ i Х ЖХЙК ОНБРНПЪЕРЯЪ. нМ ОПЕЙПЮЫЮЕР ПЮАНРС, ЙНЦДЮ i ДНЯРХЦМЕР ВЕРШПЕУ. йЮЙ БШ БХДХРЕ, ОЕПЕУНД Й МНБНИ ЯРПНЙЕ (newline) МЕ РПЕАСЕРЯЪ ЛЕФДС СЯКНБХЕЛ Х РЕКНЛ; МН МНБЮЪ ЯРПНЙЮ ДЕКЮЕР ОПНЦПЮЛЛС ОНМЪРМЕЕ, ЕЯКХ РЕКН МЕ ЪБКЪЕРЯЪ ЯНЯРЮБМШЛ НОЕПЮРНПНЛ ХКХ НВЕМЭ ОПНЯРН. мНБЮЪ ЯРПНЙЮ ОНЯКЕ НРЙПШБЮЧЫЕИ ЯЙНАЙХ РЮЙФЕ МЕ РПЕАСЕРЯЪ, МН ОПНЦПЮЛЛЮ АЕГ МЕЕ ЯРЮМНБХРЯЪ АНКЕЕ РПСДМН ВХРЮЕЛНИ. 9.3 нОЕПЮРНП do-whileжХЙК do ЕЯРЭ БЮПХЮМР ЖХЙКЮ while. жХЙК do БШОНКМЪЕР РЕКН НДХМ ПЮГ, Ю ГЮРЕЛ ОНБРНПЪЕР ЕЦН ОНЙЮ condition ХЛЕЕР ГМЮВЕМХЕ true. нМ БШЦКЪДХР РЮЙ: do body while (condition) дЮФЕ ЕЯКХ condition ЕЯРЭ false Я ЯЮЛНЦН МЮВЮКЮ, body ХЯОНКМЪЕРЯЪ ОН ЙПЮИМЕИ ЛЕПЕ НДХМ ПЮГ (Х РНКЭЙН ПЮГ, ЕЯКХ ХЯОНКМЕМХЕ РЕКЮ МЕ ДЮЯР СЯКНБХЧ ГМЮВЕМХЕ true). б ОПНРХБНОНКНФМНЯРЭ ЩРНЛС, РЮЙНИ НОЕПЮРНП while: while (condition) body МЕ БШОНКМЪЕР РЕКН МХ НДМНЦН ПЮГЮ, ЕЯКХ СЯКНБХЕ Я ЯЮЛНЦН МЮВЮКЮ ХЛЕЕР ГМЮВЕМХЕ false. бНР ОПХЛЕП НОЕПЮРНПЮ do: awk '- i = 1 do - print $0 i++ "" while (i != 10) ""' щРЮ ОПНЦПЮЛЛЮ ОЕВЮРЮЕР ЙЮФДСЧ БУНДМСЧ ГЮОХЯЭ ДЕЯЪРЭ ПЮГ. щРНР ОПХЛЕП МЕ НВЕМЭ БОЕВЮРКЪЕР, ОНЯЙНКЭЙС Б ЩРНЛ ЯКСВЮЕ НАШВМШИ while АСДЕР ДЕИЯРБНБЮРЭ РЮЙ ФЕ УНПНЬН. мН ЩРН ЯННРБЕРЯРБСЕР ПЕЮКЭМНЛС НОШРС; НОЕПЮРНПШ do МЕНАУНДХЛШ ДНЯРЮРНВМН ПЕДЙН. 9.4 нОЕПЮРНП forнОЕПЮРНП for ОНГБНКЪЕР СДНАМН ЯВХРЮРЭ ОНБРНПЕМХЪ ЖХЙКЮ. нАЫЮЪ ТНПЛЮ НОЕПЮРНПЮ for БШЦКЪДХР РЮЙ: for (initialization; condition; increment) body вЮЯРХ ХМХЖХЮКХГЮЖХЪ, СЯКНБХЕ Х ОПХПЮЫЕМХЕ ОПЕДЯРЮБКЪЧР ОПНХГБНКЭМШЕ БШПЮФЕМХЪ awk, Ю РЕКН ЕЯРЭ ОПНХГБНКЭМШИ awk-НОЕПЮРНП. нОЕПЮРНП for МЮВХМЮЕРЯЪ Я БШВХЯКЕМХЪ initialization. гЮРЕЛ, ОНЙЮ condition ЕЯРЭ true, ОНБРНПЪЧРЯЪ БШОНКМЕМХЪ body Ю ГЮРЕЛ increment. нАШВМН initialization СЯРЮМЮБКХБЮЕР ОЕПЕЛЕММСЧ МЮ ГМЮВЕМХЕ МНКЭ ХКХ НДХМ, increment ДНАЮБКЪЕР Й МЕИ ЕДХМХЖС, Ю condition ЯПЮБМХБЮЕР ЕЕ Я ФЕКЮЕЛШЛ ВХЯКНЛ ОНБРНПЕМХИ. бНР ОПХЛЕП НОЕПЮРНПЮ for: awk '- for (i = 1; i != 3; i++) print $i ""' inventory-shipped нМ ОЕВЮРЮЕР ОЕПБШЕ РПХ ОНКЪ ЙЮФДНИ БУНДМНИ ГЮОХЯХ, ОН НДМНЛС ОНКЧ Б ЯРПНЙЕ. лНФМН ОНЛЕЯРХРЭ АНКЕЕ НДМНИ ОЕПЕЛЕММНИ Б ВЮЯРХ initialization ХКХ ХЯОНКЭГНБЮРЭ ЙПЮРМШЕ ОПХЯБЮХБЮМХЪ РХОЮ `x = y = 0', ЙНРНПШЕ, ОПЮБДЮ, ДЮЧР НДХМЮЙНБШЕ МЮВЮКЭМШЕ ГМЮВЕМХЪ БЯЕЛ ОЕПЕЛЕММШЛ. (мН БШ ЛНФЕРЕ РЮЙФЕ ХМХЖХЮКХГХПНБЮРЭ ДНОНКМХРЕКЭМШЕ ОЕПЕЛЕММШЕ, МЮОХЯЮБ ХУ ОПХЯБЮХБЮМХЪ ЙЮЙ НРДЕКЭМШЕ НОЕПЮРНПШ ОЕПЕД ЖХЙКНЛ for.) рН ФЕ ЯЮЛНЕ НРМНЯХРЯЪ Х Й ВЮЯРХ increment; ВРНАШ ХГЛЕМЪРЭ ДНОНКМХРЕКЭМШЕ ОЕПЕЛЕММШЕ, ЛНФМН ОХЯЮРЭ НРДЕКЭМШЕ НОЕПЮРНПШ Б ЙНМЖЕ ЖХЙКЮ. яКНФМНЕ БШПЮФЕМХЕ яХ, ХЯОНКЭГСЧЫЕЕ НОЕПЮРНП comma ЩРНЦН ЪГШЙЮ, АШКН АШ ОНКЕГМН Б ЩРНЛ ЙНМРЕЙЯРЕ, МН НМН МЕ БЙКЧВЕМН Б awk. вЮЫЕ БЯЕЦН increment ЕЯРЭ БШПЮФЕМХЕ ОПХПЮЫЕМХЪ ЙЮЙ Б ОПЕДШДСЫЕЛ ОПХЛЕПЕ. мН ЩРН МЕ НАЪГЮРЕКЭМН; НМН ЛНФЕР АШРЭ КЧАШЛ БШПЮФЕМХЕЛ. мЮОПХЛЕП, РЮЙНИ НОЕПЮРНП ОЕВЮРЮЕР БЯЕ ЯРЕОЕМХ ДБСУ ЛЕФДС ЕДХМХЖЕИ Х 100: for (i = 1; i != 100; i *= 2) print i кЧАШЕ ХГ РПЕУ БШПЮФЕМХИ Б ЯЙНАЙЮУ ОНЯКЕ for ЛНЦСР АШРЭ НОСЫЕМШ, ЕЯКХ МЕ МСФМШ. рЮЙ, `for (; x ? 0;)' ЩЙБХБЮКЕМРМН `while (x ? 0)'. еЯКХ НОСЫЕМН СЯКНБХЕ, НМН РПЮЙРСЕРЯЪ ЙЮЙ true, ВРН ОПХБНДХР Й АЕЯЙНМЕВМНЛС ЖХЙКС (Р.Е. Й ЖХЙКС, ЙНРНПШИ МХЙНЦДЮ МЕ ЙНМВЮЕРЯЪ). бН ЛМНЦХУ ЯКСВЮЪУ ЖХЙК for ЕЯРЭ ЯНЙПЮЫЕМХЕ ЖХЙКЮ while: initialization while (condition) - body increment "" еДХМЯРБЕММНЕ ХЯЙКЧВЕМХЕ ХЛЕЕР ЛЕЯРН ЙНЦДЮ НОЕПЮРНП ОПНДНКФЕМХЪ (continue) (ЯЛ. ПЮГДЕК 9.6 [нОЕПЮРНП continue], ЯРП. 110) ХЯОНКЭГНБЮМ БМСРПХ ЖХЙКЮ; ОПЕБПЮЫЮЪ НОЕПЮРНП for Б НОЕПЮРНП while РЮЙХЛ ОСРЕЛ, ЛШ ЛЕМЪЕЛ ДЕИЯРБХЕ НОЕПЮРНПЮ continue БМСРПХ ЖХЙКЮ. хЛЕЕРЯЪ Х ДПСЦЮЪ БЕПЯХЪ ЖХЙКЮ for ДКЪ ХРЕПЮЖХИ ОН БЯЕЛ ХМДЕЙЯЮЛ ЛЮЯЯХБЮ: for (i in array) do something with array[i] яЛ. ПЮГДЕК 11.5 [яЙЮМХПНБЮМХЕ БЯЕУ ЩКЕЛЕМРНБ ЛЮЯЯХБЮ], ЯРП. 127, ЯНДЕПФЮЫХИ АНКЭЬЕ ХМТНПЛЮЖХХ НА ЩРНИ БЕПЯХХ ЖХЙКЮ for. ъГШЙ awk ХЛЕЕР НОЕПЮРНП for Б ДНОНКМЕМХЕ Й НОЕПЮРНПЮЛ while, ОНРНЛС ВРН ВЮЯРН РЮЙНИ НОЕПЮРНП ЖХЙКЮ Х ОПНЫЕ ОХЯЮРЭ Х КЕЦВЕ ОНМХЛЮРЭ. сВЕР ЙНКХВЕЯРБЮ ХРЕПЮЖХИ НВЕМЭ ВЮЯРН ХЯОНКЭГСЕРЯЪ Б ЖХЙКЮУ. лНФЕР АШРЭ, ВРН НА ЩРНЛ ЯВЕРЕ КЕЦВЕ ДСЛЮРЭ ЙЮЙ Н ВЮЯРХ ОНБРНПЕМХЪ (looping), ВЕЛ Н ВЕЛ-РН БМСРПХ ЖХЙКЮ. яКЕДСЧЫХИ ПЮГДЕК ЯНДЕПФХР АНКЕЕ ЯКНФМШЕ ОПХЛЕПШ ЖХЙКНБ.9.5 нОЕПЮРНП breakнОЕПЮРНП ОПЕПШБЮМХЪ break БШБНДХР ХГ ЖХЙКНБ for, while ХКХ do, Б ЙНРНПШУ НМ МЮУНДХРЯЪ. яКЕДСЧЫХИ ОПХЛЕП МЮУНДХР МЮХЛЕМЭЬХИ ДЕКХРЕКЭ КЧАНЦН ЖЕКНЦН Х НРЛЕВЮЕР ОПНЯРШЕ ВХЯКЮ: awk '# МЮУНДХР МЮХЛЕМЭЬХИ ДЕКХРЕКЭ ДКЪ num - num = $1 for (div = 2; div*div != num; div++) if (num % div == 0) break if (num % div == 0) printf "Smallest divisor of %d is %d"n", num, div else printf "%d is prime"n", num ""' еЯКХ Б ОЕПБНЛ НОЕПЮРНПЕ if НЯРЮРНЙ ПЮБЕМ МСКЧ, awk МЕЛЕДКЕММН ОПЕПШБЮЕР ЖХЙК for. щРН НГМЮВЮЕР ОЕПЕУНД Й НОЕПЮРНПС, МЕОНЯПЕДЯРБЕММН ЯКЕДСЧЫЕЛС ГЮ ЖХЙКНЛ Х ОПНДНКФЕМХЕ НАПЮАНРЙХ. (щРН ЯНБЕПЬЕММН МЕ ОНУНФЕ МЮ НОЕПЮРНП exit, ЙНРНПШИ ОПЕЙПЮЫЮЕР БШОНКМЕМХЕ ОПНЦПЮЛЛШ awk. яЛ. ПЮГДЕК 9.9 [нОЕПЮРНП exit], ЯРП. 112.) бНР ДПСЦНИ ОПХЛЕП ОПНЦПЮЛЛШ, ЩЙБХБЮКЕМРМНИ ОПЕДШДСЫЕИ. нМ ХККЧЯРПХПСЕР, ЙЮЙ condition ЖХЙКЮ for ХКХ while ЛНФМН ГЮЛЕМХРЭ МЮ НОЕПЮРНП break БМСРПХ НОЕПЮРНПЮ if: awk '# МЮУНДХР МЮХЛЕМЭЬХИ ДЕКХРЕКЭ ДКЪ num - num = $1 for (div = 2; ; div++) - if (num % div == 0) - printf "Smallest divisor of %d is %d"n", num, div break "" if (div*div ? num) - printf "%d is prime"n", num break "" "" ""' бШЬЕ СФЕ ЦНБНПХКНЯЭ, ВРН НОЕПЮРНП break МЕ ХЛЕЕР ЯЛШЯКЮ, ЕЯКХ ПЮЯОНКНФЕМ БМЕ РЕКЮ ЖХЙКЮ. нДМЮЙН, УНРЪ ЩРН МХЦДЕ МЕ ДНЙСЛЕМРХПНБЮМН, ОН РПЮДХЖХХ ПЕЮКХГЮЖХХ awk ПЮЯЯЛЮРПХБЮКХ НОЕПЮРНП break БМЕ ЖХЙКЮ ЙЮЙ НОЕПЮРНП next (ЯЛ. ПЮГДЕК 9.7 [НОЕПЮРНП next], ЯРП. 111). оНЯКЕДМХЕ БЕПЯХХ Unix awk АНКЭЬЕ МЕ ПЮГПЕЬЮЧР РЮЙНЕ СОНРПЕАКЕМХЕ. gawk ОНДДЕПФХР РЮЙНЕ СОНРПЕАКЕМХЕ, ЕЯКХ Б ЙНЛЮМДМНИ ЯРПНЙЕ АСДЕР СЙЮГЮМ ОЮПЮЛЕРП `--traditional' (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161). б ОПНРХБМНЛ ЯКСВЮЕ НМН АСДЕР ПЮЯЯЛЮРПХБЮРЭЯЪ ЙЮЙ ЯХМРЮЙЯХВЕЯЙЮЪ НЬХАЙЮ, ОНЯЙНКЭЙС ЯРЮМДЮПР POSIX СЙЮГШБЮЕР, ВРН break ЛНФЕР ХЯОНКЭГНБЮРЭЯЪ РНКЭЙН БМСРПХ РЕКЮ ЖХЙКЮ (d.c.). 9.6 нОЕПЮРНП continueнОЕПЮРНП continue, ОНДНАМН break, СОНРПЕАКЪЕРЯЪ РНКЭЙН БМСРПХ for, while Х do ЖХЙКНБ. нМ НГМЮВЮЕР ХЦМНПХПНБЮМХЕ НЯРЮРЙЮ РЕКЮ ЖХЙКЮ, ОНАСФДЮЪ МЕЛЕДКЕММН ОЕПЕИРХ Й МЮВЮКС ЖХЙКЮ. б ОПНРХБНОНКНФМНЯРЭ break, ЙНРНПШИ ГЮЯРЮБКЪЕР ЯНБЯЕЛ ОНЙХМСРЭ ЖХЙК. нОЕПЮРНП continue Б ЖХЙКЕ for ОПЕДОХЯШБЮЕР awk ОПНОСЯРХРЭ НЯРЮРНЙ РЕКЮ Х ОПНДНКФХРЭ ПЮАНРС Я БШПЮФЕМХЪ increment Б ЯНЯРЮБЕ ЖХЙКЮ. щРН ХККЧЯРПХПСЕР ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ: awk 'BEGIN - for (x = 0; x != 20; x++) - if (x == 5) continue printf "%d ", x "" print "" ""' щРЮ ОПНЦПЮЛЛЮ ОЕВЮРЮЕР БЯЕ ВХЯКЮ НР 0 ДН 20, ГЮ ХЯЙКЧВЕМХЕЛ ВХЯКЮ 5, ДКЪ ЙНРНПНЦН ОЕВЮРЭ ОПНОСЯЙЮЕРЯЪ. оНЯЙНКЭЙС ОПХПЮЫЕМХЕ `x++' МЕ ОПНОСЯЙЮЕРЯЪ, x МЕ НЯРЮМЮБКХБЮЕРЯЪ МЮ ОЪРХ. б НРКХВХЕ НР ЩРНЦН ОПХЛЕПЮ Я ЖХЙКНЛ for, ОН-ДПСЦНЛС БЕДЕР ЯЕАЪ ЖХЙК Я while Б ЯКЕДСЧЫЕЛ ОПХЛЕПЕ: awk 'BEGIN - x = 0 while (x != 20) - if (x == 5) continue printf "%d ", x x++ "" print "" ""' щРЮ ОПНЦПЮЛЛЮ ГЮЖХЙКХБЮЕРЯЪ, ЙНЦДЮ У ДНЯРХЦЮЕР 5. йЮЙ ЯЙЮГЮМН БШЬЕ, НОЕПЮРНП continue МЕ ХЛЕЕР ЯЛШЯКЮ, ЕЯКХ ЯРНХР БМЕ РЕКЮ ЖХЙКЮ. нДМЮЙН, УНРЪ ЩРН МХЦДЕ МЕ ДНЙСЛЕМРХПНБЮМН, ХЯРНПХВЕЯЙХ ПЕЮКХГЮЖХХ awk РПЮЙРНБЮКХ ЩРНР НОЕПЮРНП БМЕ ЖХЙКЮ ЙЮЙ НОЕПЮРНП next (ЯЛ. ПЮГДЕК 9.7 [нОЕПЮРНП next], ЯРП. 111). оНЯКЕДМХЕ БЕПЯХХ Unix awk МЕ ДНОСЯЙЮЧР АНКЭЬЕ ЩРН. gawk ДНОСЯЙЮЕР РЮЙНЕ СОНРПЕАКЕМХЕ continue РНКЭЙН ОПХ СЙЮГЮМХХ Б ЙНЛЮМДМНИ ЯРПНЙЕ ОЮПЮЛЕРПЮ `--traditional' (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161). б ОПНРХБМНЛ ЯКСВЮЕ ЩРН РПЮЙРСЕРЯЪ ЙЮЙ НЬХАЙЮ, ОНЯЙНКЭЙС ЯРЮМДЮПР POSIX РПЕАСЕР, ВРНАШ НОЕПЮРНП continue ХЯОНКЭГНБЮКЯЪ РНКЭЙН БМСРПХ РЕКЮ ЖХЙКЮ d.c.). 9.7 нОЕПЮРНП nextнОЕПЮРНП next ОНМСФДЮЕР awk МЕЛЕДКЕММН ОПЕЙПЮРХРЭ НАПЮАНРЙС РЕЙСЫЕИ ГЮОХЯХ Х ОЕПЕИРХ Й ЯКЕДСЧЫЕИ ГЮОХЯХ. щРН ГМЮВХР, ВРН ОНЯКЕДСЧЫХЕ ОПЮБХКЮ МЕ ОПХЛЕМЪЧРЯЪ Й РЕЙСЫЕИ ГЮОХЯХ. рЮЙФЕ МЕ БШОНКМЪЧРЯЪ НЯРЮБЬХЕЯЪ ДЕИЯРБХЪ РЕЙСЫЕЦН ОПЮБХКЮ . мЕ ЯНБЯЕЛ РЮЙ НМ ДЕИЯРБСЕР Б ЯКСВЮЕ ТСМЙЖХХ getline (ЯЛ. ПЮГДЕК 5.8 [ъБМШИ ББНД ОН getline], ЯРП. 53). нМ РНФЕ ОНАСФДЮЕР awk ОПНВЕЯРЭ МЕЛЕДКЕММН ЯКЕДСЧЫСЧ ГЮОХЯЭ, МН МХЙЮЙ МЕ ЛЕМЪЕР УНД СОПЮБКЕМХЪ. рН ЕЯРЭ НЯРЮРНЙ РЕЙСЫХУ ДЕИЯРБХИ ОЕПЕМНЯХРЯЪ МЮ ЯКЕДСЧЫСЧ ГЮОХЯЭ. мЮ ЯЮЛНЛ БЕПУМЕЛ СПНБМЕ БШОНКМЕМХЕ awk-ОПНЦПЮЛЛШ ЕЯРЭ ЖХЙК, ЙНРНПШИ ВХРЮЕР БУНДМСЧ ГЮОХЯЭ Х ОПНБЕПЪЕР ЕЕ МЮ ЯННРБЕРЯРБХЕ НАПЮГЖС ЙЮФДНЦН ОПЮБХКЮ. еЯКХ ОПЕДЯРЮБКЪРЭ ЯЕАЕ ЩРНР ЖХЙК ЙЮЙ НОЕПЮРНП for, РЕКН ЙНРНПНЦН ЯНДЕПФХР ОПЮБХКЮ, РН НОЕПЮРНП next ЮМЮКНЦХВЕМ НОЕПЮРНПС continue: НМ ОПНОСЯЙЮЕР ЙНМЕЖ РЕКЮ ЩРНЦН МЕЪБМНЦН ЖХЙКЮ Х БШВХЯКЪЕР increment (Р.Е, ВХРЮЕР ЯКЕДСЧЫСЧ ГЮОХЯЭ). мЮОПХЛЕП, ЕЯКХ БЮЬЮ awk-ОПНЦПЮЛЛЮ ПЮАНРЮЕР РНКЭЙН МЮ ГЮОХЯЪУ Я ВЕРШПЭЛЪ ОНКЪЛХ Х БШ МЕ УНРХРЕ ЕЕ ОПЕЙПЮЫЕМХЪ ОПХ МЕЯННРБЕРЯРБСЧЫЕЛ ББНДЕ, БШ ЛНФЕРЕ ХЯОНКЭГНБЮРЭ РЮЙНЕ ОПЮБХКН НЙНКН МЮВЮКЮ ОПНЦПЮЛЛШ: NF != 4 - err = sprintf("%s:%d: skipped: NF != 4"n", FILENAME, FNR) print err ?& "/dev/stderr" next "" РЮЙ ВРН ЯКЕДСЧЫХЕ ОПЮБХКЮ МЕ СБХДЪР ОКНУСЧ ГЮОХЯЭ. яННАЫЕМХЕ НА НЬХАЙЕ ОЕПЕМЮОПЮБКЪЕРЯЪ ОН ЯРЮМДЮПРМНЛС ОНРНЙС БШДЮВХ НЬХАНЙ, ЙЮЙ Х ЯКЕДСЕР ДКЪ ЯННАЫЕМХИ НА НЬХАЙЮУ. яЛ. ПЮГДЕК 6.7 [яОЕЖХЮКЭМШЕ ХЛЕМЮ ТЮИКНБ Б gawk], ЯРП. 72. яННРБЕРЯРБЕММН ЯРЮМДЮПРС POSIX, ОНБЕДЕМХЕ МЕ НОПЕДЕКЕМН, ЕЯКХ НОЕПЮРНП next ХЯОНКЭГНБЮМ Б ОПЮБХКЕ BEGIN ХКХ END. gawk РПЮЙРСЕР ЩРН ЙЮЙ ЯХМРЮЙЯХВЕЯЙСЧ НЬХАЙС. уНРЪ POSIX ДНОСЯЙЮЕР ЩРН, МЕЙНРНПШЕ ДПСЦХЕ ПЕЮКХГЮЖХХ МЕ РЕПОЪР НОЕПЮРНП next БМСРПХ РЕК ТСМЙЖХИ (ЯЛ. ЦКЮБС 13 [тСМЙЖХХ, НОПЕДЕКЕММШЕ ОНКЭГНБЮРЕКЕЛ], ЯРП. 153). рЮЙФЕ ЙЮЙ Х НОЕПЮРНПШ next Б ДПСЦХУ ОНГХЖХЪУ, next БМСРПХ РЕКЮ ТСМЙЖХХ ВХРЮЕР ЯКЕДСЧЫСЧ ГЮОХЯЭ Х МЮВХМЮЕР ЕЕ НАПЮАНРЙС Я ОЕПБНЦН ОПЮБХКЮ ОПНЦПЮЛЛШ. еЯКХ НОЕПЮРНП next ОПХБНДХР Й ЙНМЖС ББНДЮ, РН БШОНКМЪЕРЯЪ ЙНД ХГ КЧАНЦН ОПЮБХКЮ END. яЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП. 100. бмхлюмхе: МЕЙНРНПШЕ ПЕЮКХГЮЖХХ awk ЦЕМЕПХПСЧР ДХМЮЛХВЕЯЙСЧ НЬХАЙС, ЕЯКХ БШ ХЯОНКЭГСЕРЕ НОЕПЮРНП next БМСРПХ ОНКЭГНБЮРЕКЭЯЙНИ ТСМЙЖХХ (ЯЛ. ЦКЮБС 13 [тСМЙЖХХ, НОПЕДЕКЕММШЕ ОНКЭГНБЮРЕКЕЛ], ЯРП. 153). gawk МЕ ХЛЕЕР РЮЙХУ ОПНАКЕЛ. 9.8 нОЕПЮРНП nextfilegawk ОПЕДСЯЛЮРПХБЮЕР НОЕПЮРНП nextfile, ОНДНАМШИ НОЕПЮРНПС next. нДМЮЙН, БЛЕЯРН ОПЕЙПЮЫЕМХЪ НАПЮАНРЙХ РЕЙСЫЕИ ГЮОХЯХ, НОЕПЮРНП nextfile ОНАСФДЮЕР gawk ОПЕЙПЮРХРЭ НАПЮАНРЙС РЕЙСЫЕЦН ТЮИКЮ ДЮММШУ. оПХ БШОНКМЕМХХ НОЕПЮРНПЮ nextfile ОЕПЕЛЕММЮЪ FILENAME ОНКСВЮЕР ГМЮВЕМХЕ ХЛЕМХ ЯКЕДСЧЫЕЦН ТЮИКЮ Я ДЮММШЛХ, СЙЮГЮММНЦН Б ЙНЛЮМДМНИ ЯРПНЙ, FNR СЯРЮМЮБКХБЮЕРЯЪ МЮ ЕДХМХЖС, ARGIND СБЕКХВХБЮЕРЯЪ Х МЮВХМЮЕРЯЪ НАПЮАНРЙЮ Я ОЕПБНЦН ОПЮБХКЮ ОПНЦПЮЛЛШ. яЛ. ЦКЮБС 10 [бЯРПНЕММШЕ ОЕПЕЛЕММШЕ], ЯРП. 115. еЯКХ НОЕПЮРНП nextfile НАМЮПСФХБЮЕР ЙНМЕЖ ББНДЮ, РН БШОНКМЪЕРЯЪ ЙНД ХГ КЧАНЦН ОПЮБХКЮ END. яЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END, ЯРП. 100. нОЕПЮРНП nextfile ЕЯРЭ ПЮЯЬХПЕМХЕ gawk; НМН (Б МЮЯРНЪЫЕЕ БПЕЛЪ) НРЯСРЯРБСЕР Б ДПСЦХУ ПЕЮКХГЮЖХЪУ awk. яЛ. ПЮГДЕК 15.2 [пЕЮКХГЮЖХЪ nextfile ЙЮЙ ТСМЙЖХЪ], ЯРП. 170, ОНРНЛС ВРН ЛНФМН Б ПЮЛЙЮУ ТСМЙЖХХ ОНКЭГНБЮРЕКЪ ЛНДЕКХПНБЮРЭ ДЕИЯРБХЪ nextfile. нМ ОНКЕГЕМ, ЕЯКХ МСФМН НАПЮАЮРШБЮРЭ ЛМНЦН ТЮИКНБ Я ДЮММШЛХ. бхлюмхе: БЕПЯХХ gawk ДН 3.0 ХЯОНКЭГНБЮКХ ДБЮ ЯКНБЮ (`next file') Б МЮГБЮМХХ НОЕПЮРНПЮ nextfile. б БЕПЯХХ 3.0 ЩРН ЯРЮКН НДМХЛ ЯКНБНЛ, ОНЯЙНКЭЙС `file' ХЛЕК ДБЮ ЯЛШЯКЮ. оНЯКЕ ЯКНБЮ next НМ АШК ЙКЧВЕБШЛ ЯКНБНЛ, Ю Б ДПСЦХУ ОНГХЖХЪУ НАШВМШЛ ХДЕМРХТХЙЮРНПНЛ. яРЮПНЕ ХЯОНКЭГНБЮМХЕ БЯЕ ЕЫЕ ОНДДЕПФХБЮЕРЯЪ, НДМЮЙН gawk ЦЕМЕПХПСЕР ОПЕДНЯРЕПЕФЕМХЕ Х Б ЯКЕДСЧЫХУ БЕПЯХЪУ БННАЫЕ ГЮОПЕРХР ЕЦН. 9.9 нОЕПЮРНП exitнОЕПЮРНП exit ОПХЙЮГШБЮЕР awk МЕЛЕДКЕММН ОПЕЙПЮРХРЭ БШОНКМЕМХЕ РЕЙСЫЕЦН ОПЮБХКЮ Х ОЕПЕЯРЮРЭ НАПЮАЮРШБЮРЭ ББНД. нЯРЮБЬХИЯЪ ББНД ХЦМНПХПСЕРЯЪ. нМ БШЦКЪДХР РЮЙ: exit [return code] еЯКХ exit БШОНКМЪЕРЯЪ ХГ ОПЮБХКЮ BEGIN, РН ОПНЦПЮЛЛЮ МЕЛЕДКЕММН НЯРЮМЮБКХБЮЕРЯЪ Х МХ НДМЮ ГЮОХЯЭ МЕ ВХРЮЕРЯЪ. нДМЮЙН, ЕЯКХ ОПХЯСРЯРБСЕР ОПЮБХКН END, НМН БШОНКМЪЕРЯЪ (ЯЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП. 100). еЯКХ exit ХЯОНКЭГНБЮМ ЙЮЙ ВЮЯРЭ ОПЮБХКЮ END, НМ ОПЕДОХЯШБЮЕР МЕЛЕДКЕММСЧ НЯРЮМНБЙС ОПНЦПЮЛЛШ. еЯКХ exit МЕ БУНДХР МХ Б BEGIN МХ Б END, НМ НЯРЮМЮБКХБЮЕР БШОНКМЕМХЕ БЯЕУ ДЮКЭМЕИЬХУ ОПЮБХК ДКЪ РЕЙСЫЕИ ГЮОХЯХ, НЯРЮМЮБКХБЮЕР ББНД ДЮКЭМЕИЬХУ ГЮОХЯЕИ Х БШОНКМЪЕР ОПЮБХКН END, ЕЯКХ НМН ХЛЕЕРЯЪ. еЯКХ БШ МЕ УНРХРЕ БШОНКМЕМХЪ END Б ЩРНЛ ЯКСВЮЕ, ЛНФМН СЯРЮМНБХРЭ КЧАСЧ ОЕПЕЛЕММСЧ МЮ МЕ МНКЭ ОЕПЕД НОЕПЮРНПНЛ exit Х ОПНБЕПХРЭ ЩРС ОЕПЕЛЕММСЧ Б ОПЮБХКЕ END. яЛ. ПЮГДЕК 15.3 [сЯРЮМНБКЕМХЪ], ЯРП. 172, Я ОПХЛЕПНЛ ЩРНЦН. еЯКХ exit ЯМЮАФЕМ ЮПЦСЛЕМРНЛ, ЕЦН ГМЮВЕМХЕ ХЯОНКЭГСЕРЯЪ ЙЮЙ ЙНД ЯРЮРСЯЮ exit Б ОПНЖЕЯЯЕ БШОНКМЕМХЪ awk. еЯКХ ЮПЦСЛЕМРЮ МЕР, exit БШДЮЕР МСКЕБНИ ЯРЮРСЯ (СЯОЕУ). б ЯКСВЮЕ, ЙНЦДЮ ЮПЦСЛЕМРНЛ ЯМЮАФЕМ ОЕПБШИ НОЕПЮРНП exit, Ю ЯПЮАНРЮК ДПСЦНИ exit АЕГ ЮПЦСЛЕМРЮ, РН ХЯОНКЭГСЕРЯЪ ЙНД ЯРЮРСЯЮ ОЕПБНЦН exit (d.c.). мЮОПХЛЕП, БШ НАМЮПСФХКХ НЬХАНВМСЧ ЯХРСЮЖХЧ, Я ЙНРНПНИ БШ МЕ ГМЮЕРЕ, ВРН ДЕКЮРЭ. нАШВМН Б РЮЙНЛ ЯКСВЮЕ ОПНЦПЮЛЛЮ ЯННАЫЮЕР ЩРН БШУНДНЛ Я МЕМСКЕБШЛ ЙНДНЛ ЯРЮРСЯЮ. б awk-ОПНЦПЮЛЛЕ ЩРН ЛНФМН ЯДЕКЮРЭ НОЕПЮРНПНЛ exit Я МЕМСКЕБШЛ ЮПЦСЛЕМРНЛ. бНР ОПХЛЕП: BEGIN - if (("date" -- getline date.now) != 0) - print "Can't get system date" ? "/dev/stderr" exit 1 "" print "current& date is", date.now close("date") "" |
<<< | нЦКЮБКЕМХЕ | яРПЮМХЖШ: 9 10 | >>> |