хМЯРПСЛЕМРШ ОПХЙКЮДМНЦН ОПНЦПЮЛЛХЯРЮ: ЯРПНЙНБШИ ОПНЖЕЯЯНП awk. нОХЯЮМН ОНОСКЪПМНЕ ХМЯРПСЛЕМРЮКЭМНЕ ЯПЕДЯРБН ЯПЕДШ ОПНЦПЮЛЛХЯРЮ Б UNIX: ЯРПНЙНБШИ ОПНЖЕЯЯНП awk, ОНГБНКЪЧЫХИ ЩТТЕЙРХБМН НАПЮАЮРШБЮРЭ ПЮГКХВМСЧ РЕЙЯРНБСЧ ХМТНПЛЮЖХЧ.

The string processor awk popular in UNIX-like operational systems is described in certain details. This tool allows an application programmer to coup efficiently with processing large amounts of textual information. Intended for application programmers, information systems developers and computer sciences students.

яНДЕПФЮМХЕ

вРН РЮЙНЕ ЯРПНЙНБШИ ОПНЖЕЯЯНП awk

гМЮВХРЕКЭМСЧ ДНКЧ ПЮАНРШ, ЙНРНПСЧ НАШВМН БШОНКМЪЕР ОПНЦПЮЛЛХЯР ХКХ ОПХЙКЮДМНИ ЯОЕЖХЮКХЯР, ГЮЙКЧВЮЕРЯЪ МЮ ЯЮЛНЛ ДЕКЕ Б ОПЕНАПЮГНБЮМХХ РЕЙЯРНБШУ ТЮИКНБ: БШДЕКЕМХХ ХГ МХУ НОПЕДЕКЕММШУ ВЮЯРЕИ, ОПЕНАПЮГНБЮМХХ НДМХУ ЯРПНЙ Б ДПСЦХЕ, ДНОХЯШБЮМХХ ЙЮЙНИ-КХАН ХМТНПЛЮЖХХ, ОПНЯРЕИЬХЕ БШВХЯКЕМХЪ Я ДЮММШЛХ, ХГБКЕЙЮЕЛШЛХ ХГ ЩРХУ ТЮИКНБ Х Р.Д., Х Р.О.

оНДНАМШЕ ГЮДЮМХЪ Я НДМНИ ЯРНПНМШ ЛНЦСР АШРЭ ЯКХЬЙНЛ РПСДНЕЛЙХ ДКЪ НАШВМНЦН РЕЙЯРНБНЦН ПЕДЮЙРНПЮ, РЮЙ ЙЮЙ ЛНЦСР РПЕАНБЮРЭ ОПНЯЛНРПЮ РШЯЪВ ЯРПНЙ РЕЙЯРЮ, Ю Я ДПСЦНИ ЯРНПНМШ -- МЕСМХТХЖХПСЕЛШЛХ, РЮЙ ЙЮЙ ХМТНПЛЮЖХЪ МЕ ЯРПСЙРСПХПНБЮМЮ Б РНЛ БХДЕ, ЙЮЙ ЩРН ХЛЕЕР ЛЕЯРН Б АЮГЮУ ДЮММШУ ХКХ ЩКЕЙРПНММШУ РЮАКХЖЮУ. дКЪ ЩТТЕЙРХБМНИ ПЮАНРШ Б ЩРНИ ''ЯЕПНИ'' НАКЮЯРХ ДЮБМН ОПЕДКНФЕМ Х Я СЯОЕУНЛ ОПХЛЕМЪЕРЯЪ ЯРПНЙНБШИ ОПНЖЕЯЯНП awk.

щРН ОПНЖЕЯЯНП ПЮЯЯЛЮРПХБЮЕР БУНДМНИ ОНРНЙ ДЮММШУ ЙЮЙ ЯНЯРНЪЫХИ ХГ ГЮОХЯЕИ, ПЮГДЕКЕММШЛХ ЯОЕЖХЮКЭМШЛХ ЯХЛБНКЮЛХ (RS). оН СЛНКВЮМХЧ РЮЙХЛ ЯХЛБНКНЛ ЪБКЪЕРЯЪ ЯХЛБНК ОЕПЕУНДЮ МЮ МНБСЧ ЯРПНЙС ('\n'). гЮОХЯЭ ЯВХРЮЕРЯЪ ПЮГДЕКЕММНИ ( ЯХЛБНКЮЛХ FS) 1 МЮ ОНКЪ Х ЯРПНЙНБШИ ОПНЖЕЯЯНП awk ЮБРНЛЮРХВЕЯЙХ БШДЕКЪЕР ЩРХ ОНКЪ Х ДЮЕР БНГЛНФМНЯРЭ ОПНХГБНДХРЭ Я МХЛХ ПЮГКХВМШЕ НОЕПЮЖХХ. оН ЯСРХ ДЕКЮ, ЩРН ЕДХМЯРБЕММНЕ ОПЕДОНКНФЕМХЕ, ЙНРНПНЕ ДЕКЮЕР awk НРМНЯХРЕКЭМН ЯРПСЙРСПШ БУНДМШУ ДЮММШУ.

гЮДЮМХЕ ОПНЖЕЯЯЮ НАПЮАНРЙХ МЕЙНРНПНЦН ТЮИКЮ Я ОНЛНЫЭЧ ОПНЦПЮЛЛШ awk ЯНЯРНХР Б НОХЯЮМХХ ДЕИЯРБХИ, ЙНРНПШЕ МСФМН ОПНХГБЕЯРХ Я ГЮОХЯЪЛХ Х ОНКЪЛХ. дКЪ ЩРНЦН awk ОПЕДНЯРЮБКЪЕР Б ПЮЯОНПЪФЕМХЕ ОПНЦПЮЛЛХЯРЮ ПЮГБХРШИ ЪГШЙ ОПНЦПЮЛЛХПНБЮМХЪ, МЮОНЛХМЮЧЫХИ ОНОСКЪПМШИ ЪГШЙ ОПНЦПЮЛЛХПНБЮМХЪ C. щРН Х МЕ СДХБХРЕКЭМН, РЮЙ ЙЮЙ ЮБРНПШ awk (юКЭТПЕД б. юУН ( Alfred V. Aho -- a), оХРЕП дФ. бЮИМАЕПЦЕП ( Peter J. Weinberger -- w ) Х аПЮИЮМ с. йЕПМХУЮМ ( Brian W. Kernighan -- k) ХГБЕЯРМШ ЙЮЙ ПНДНМЮВЮКЭМХЙХ ЪГШЙЮ C Х НОЕПЮЖХНММНИ ЯХЯРЕЛШ UNIX.

бУНДМНИ ЪГШЙ ОПНЖЕЯЯНПЮ awk ЪБКЪЕРЯЪ Б НОПЕДЕКЕММНЛ ЯЛШЯКЕ ''СОПНЫЕММШЛ'' C Х МЕ ЯНДЕПФХР РЮЙХУ РХОНБ ДЮММШУ ЙЮЙ СЙЮГЮРЕКХ Х ЯРПСЙРСПШ. нРЯСРЯРБСЧР Б МЕЛ Х ДПСЦХЕ ЩКЕЛЕМРШ ЪГШЙЮ C, РЮЙХЕ, МЮОПХЛЕПa, ЙЮЙ ЙНЛЮМДШ ОПЕОПНЖЕЯЯНПЮ, АХРНБШЕ НОЕПЮЖХХ, КНЙЮКХГЮЖХЪ ОЕПЕЛЕММШУ Х ОП.

нДМЮЙН, Б НРКХВХЕ НР C awk ОПЕДНЯРЮБКЪЕР СДНАМШИ НОЕПЮЖХНММШИ ЯХМРЮЙЯХЯ ДКЪ ЯРПНЙНБШУ НОЕПЮЖХИ, ЮБРНЛЮРХВЕЯЙНЕ ОПЕНАПЮГНБЮМХЕ ЯРПНЙЮ-ВХЯКН, ЮБРНЛЮРХВЕЯЙХИ КЕЙЯХВЕЯЙХИ ПЮГАНП БУНДМНЦН ОНРНЙЮ Х Р.О., ВРН ДЕКЮЕР ЕЦН ХЯЙКЧВХРЕКЭМН СДНАМШЛ ЯПЕДЯРБНЛ БШОНКМЕМХЪ ОПНЯРШУ, МН РПСДНЕЛЙХУ НОЕПЮЖХИ c РЕЙЯРНБШЛХ ТЮИКЮЛХ АНКЭЬХУ ПЮГЛЕПНБ. йПНЛЕ ЩРНЦН, awk ЪБКЪЕРЯЪ ХМРЕПОПЕРХПСЧЫХЛ ЪГШЙНЛ, ВРН ЯСЫЕЯРБЕММН СОПНЫЮЕР ОПНЖЕЯЯ ПЮГПЮАНРЙХ awk-ОПХКНФЕМХИ.

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

яРПСЙРСПЮ awk-ТЮИКЮ

оПНЦПЮЛЛЮ МЮ ЪГШЙЕ awk ЯНЯРНХР ХГ ОЮП:
НАПЮГЕЖ     ДЕИЯРБХЕ.
йЮФДЮЪ ГЮОХЯЭ ОПНБЕПЪЕРЯЪ БЯРПНЕММШЛ ЛЕУЮМХГЛНЛ awk МЮ ЯННРБЕРЯРБХЕ ГЮДЮММНЛС НАПЮГЖС Х ЕЯКХ РЕЙСЫЮЪ ГЮОХЯЭ ЯННРБЕРЯРБСЕР ЩРНЛС НАПЮГЖС, БШОНКМЪЕРЯЪ ДЕИЯРБХЕ.

оПНЦПЮЛЛЮ МЮ awk ЛНФЕР ЯНДЕПФЮРЭ НОПЕДЕКЕМХЪ ТСМЙЖХИ, ЙНРНПШЕ ЛНФМН ЯВХРЮРЭ РЮЙФЕ ХЛЕЧЫХЛХ ТНПЛС НАПЮГЕЖ -- ДЕИЯРБХЕ ЯН ЯОЕЖХЮКЭМШЛ БХДНЛ НАПЮГЖЮ. оНДПНАМЕЕ ГЮДЮМХЕ ТСМЙЖХИ НОХЯЮМН Б ПЮГДЕКЕ [*]

дЕИЯРБХЕ НОХЯШБЮЕРЯЪ НОЕПЮРНПЮЛХ ЪГШЙЮ awk, ЙНРНПШЕ ОНДПНАМЕЕ ПЮЯЯЛЮРПХБЮЧРЯЪ ДЮКЕЕ. вРНАШ НРДЕКХРЭ СЯКНБХЕ НР ДЕИЯРБХЪ, ОНЯКЕДМЕЕ НАШВМН ГЮЙКЧВЮЕРЯЪ Б ТХЦСПМШЕ ЯЙНАЙХ . хЯКЧВЕМХЕ ЯНЯРЮБКЪЕР КХЬЭ ЯКСВЮИ ОСЯРНЦН ДЕИЯРБХЪ, ЙНРНПНЕ Б ЩРНЛ ЯКСВЮЕ ОПХБНДХР Й БШБНДС МЮ ОЕВЮРЭ БУНДМНИ ГЮОХЯХ.

нАПЮГЖШ Х ПЕЦСКЪПМШЕ БШПЮФЕМХЪ

дКЪ ГЮДЮМХЪ НАПЮГЖНБ ХЯОНКЭГСЧРЯЪ ЯКЕДСЧЫХЕ ЯПЕДЯРБЮ:


/ПЕЦСКЪПМНЕ БШПЮФЕМХЕ/
КНЦХВЕЯЙНЕ БШПЮФЕМХЕ
ОПНБЕПЙЮ МЮ ЯНБОЮДЕМХЕ
ДХЮОЮГНМ ГЮОХЯЕИ
ГЮЦНКНБНЙ ТСМЙЖХХ
BEGIN
END


оНМЪРХЕ ПЕЦСКЪПМНЦН БШПЮФЕМХЪ ЯНБОЮДЮЕР Б НЯМНБМНЛ Я ПЕЦСКЪПМШЛХ БШПЮФЕМХЪЛХ, ОПХГМЮБЮЕЛШЛХ grep[1], ВРН МЕСДХБХРЕКЭМН, РЮЙ ЙЮЙ ЮБРНПШ awk ЯХКЭМН ОНБКХЪКХ Х МЮ ПЮГПЮАНРЙС grep.

оПНЯРЕИЬХЛ ЯКСВЮЕЛ ПЕЦСКЪПМНЦН БШПЮФЕМХЪ ЪБКЪЕРЯЪ ЯРПНЙЮ ЯХЛБНКНБ. оПНЦПЮЛЛЮ ( Я ОСЯРШЛ ДЕИЯРБХЕЛ )

    /хБЮМНБ/

МЮОЕВЮРЮЕР ХГ РЕЙЯРНБНЦН ТЮИКЮ РЕ ЯРПНЙХ, ЙНРНПШЕ ЯНДЕПФЮР ОНДЯРПНЙС "хБЮМНБ" ( Б РНЛ ВХЯКЕ Х "хБЮМНБЯЙХИ ЛЮЬХМНЯРПНХРЕКЭМШИ ГЮБНД" ).

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

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

йЮМНМХВЕЯЙХИ ЯОХЯНЙ ЛЕРЮЯХЛБНКНБ ЯНДЕПФХР ЯКЕДСЧЫХЕ ЩКЕЛЕМРШ:

^ $ [ ] - + * .(РНВЙЮ) \

лЕРЮЯХЛБНКШ ХЛЕЧР ЯКЕДСЧЫСЧ ЯЕЛЮРХЙС:

^ -- ЯННРБЕРЯРБСЕР МЮВЮКС ЯРПНЙХ. щРН ОНГБНКЪЕР БШДЕКЪРЭ ЯРПНЙХ МЕ РНКЭЙН ОН МЮКХВХЧ Б МХУ РЕУ ХКХ ХМШУ ЯХЛБНКНБ, МН Х ОН ХУ ПЮЯОНКНФЕМХЧ Б ЯРПНЙЕ. рЮЙ, МЮОПХЛЕП, /^A/ ЯННРБЕРЯРБСЕР ЯРПНЙЮЛ (ГЮОХЯЪЛ), МЮВХМЮЧЫХЛЯЪ МЮ A.
$ -- ЯННРБЕРЯРБСЕР ЙНМЖС ЯРПНЙХ. мЮОПХЛЕП, /A$/ НРБЕВЮЕР ЯРПНЙЮЛ, ГЮЙЮМВХБЮЧЫХЛЯЪ МЮ A.
[ ] -- c ОНЛНЫЭЧ ЩРХУ ЯХЛБНКНБ НОХЯШБЮЧР ЛМНФЕЯРБЮ ЕДХМХВМШУ ЯХЛБНКНБ. б ОПНЯРЕИЬЕЛ ЯКСВЮЕ ЩРХ ЛМНФЕЯРБЮ НОХЯШБЮЧРЯЪ ОЕПЕВХЯКЕМХЕЛ: [AWK] ЯННРБЕРЯРБСЕР ЛМНФЕЯРБС ХГ РПЕУ АСЙБ A, W, K. яННРБЕРЯРБЕММН G[AWK] ОПЕДЯРЮБКЪЕР ЛМНФЕЯРБН ЯРПНЙ { GA, GW, GK }.
- -- ХЯОНКЭГСЕРЯЪ ДКЪ ГЮДЮМХЪ ДХЮОЮГНМЮ ЯХЛБНКНБ, МЮОПХЛЕП, [a-z] ЯННРБЕРЯРБСЕР ЯХЛБНКЮЛ НР a ДН z, ЙЮЙ НМХ ПЮЯОНКНФЕМШ Б РЮАКХЖЕ ЙНДНБ ASCII.
+ -- ЩРНР ЯХЛБНК НАНГМЮВЮЕР ЛМНЦНЙПЮРМНЕ ( МЕ ЛЕМЕЕ НДМНЦН ) ОНБРНПЕМХЕ Б НАПЮГЖЕ ЯХЛБНКЮ, ОПЕДЬЕЯРБСЧЫЕЦН +.
* -- РЮЙФЕ ЛМНЦНЙПЮРМНЕ, МН БНГЛНФМН РЮЙФЕ Х МСКЕБНЕ ОНБРНПЕМХЕ ОПЕДШДСЫЕЦН ЯХЛБНКЮ. рХОХВМШИ ОПХЛЕП: [1-9][0-9]* -- ОНКНФХРЕКЭМШЕ ЖЕКШЕ ВХЯКЮ.
.(РНВЙЮ) -- НАНГМЮВЮЕР ОПНХГБНКЭМШИ ЕДХМХВМШИ ЯХЛБНК. кЕЦЕМДЮПМСЧ ХГБЕЯРМНЯРЭ ОПХНАПЕКЮ ЙНЛАХМЮЖХЪ .*, ЙНРНПЮЪ НАНГМЮВЮЕР РЮЙХЛ НАПЮГНЛ ОПНХГБНКЭМСЧ ЙНЛАХМЮЖХЧ ЯХЛБНКНБ.
\ -- НРЛЕМЪЕР ЯОЕЖХЮКЭМНЕ ГМЮВЕМХЕ ОНЯКЕДСЧЫЕЦН ЯХЛБНКЮ. нРЛЕМЮ ЯОЕЖХЮКЭМНЦН ГМЮВЕМХЪ \ ОПНХГБНДХРЯЪ ОПХ ОНЛНЫХ \\.

кНЦХВЕЯЙХЕ БШПЮФЕМХЪ ЯРПНЪРЯЪ Я ОНЛНЫЭЧ НОЕПЮЖХИ, ОПХБЕДЕММШУ Б РЮАК. [*].

Table: кНЦХВЕЯЙХЕ НОЕПЮЖХХ ЪГШЙЮ awk.
|| КНЦХВЕЯЙНЕ ХКХ
&& КНЦХВЕЯЙНЕ Х
<, <= ЛЕМЭЬЕ, ЛЕМЭЬЕ ХКХ ПЮБМН
>=, > АНКЭЬЕ, АНКЭЬЕ ХКХ ПЮБМН
== ЯНБОЮДЕМХЕ (ЯРПНЙ) ХКХ ВХЯКЕММНЕ ПЮБЕМЯРБН
!= МЕЯНБОЮДЕМХЕ ХКХ МЕПЮБЕМЯРБН
~ ОПНБЕПЙЮ МЮ ЯНДЕПФЮМХЕ
! НРПХЖЮМХЕ

мЮОПХЛЕП, НАПЮГЕЖ /^A/ && ! /^AB/ ЯННРБЕРЯРБСЕР ГЮОХЯЪЛ, МЮВХМЮЧЫХЛЯЪ МЮ ЯХЛБНК A, МН МЕ ХЛЕЧЫХЛ Б ЙЮВЕЯРБЕ ОНЯКЕДСЧЫЕЦН ЯХЛБНКЮ B.

б ЙЮВЕЯРБЕ НАПЮГЖЮ ЛНФМН СЙЮГЮРЭ РЮЙФЕ Х ЦПСООС ЯРПНЙ. рЮЙЮЪ ЦПСООЮ ЯРПНЙ НАНГМЮВЮЕРЯЪ Б ОНКЕ НАПЮГЖЮ ЙЮЙ

    НАПЮГЕЖ-1, НАПЮГЕЖ-2

Х НГМЮВЮЕР, ВРН ЯННРБЕРЯРБСЧЫЕЕ ДЕИЯРБХЕ АСДЕР БШОНКМЪРЯЪ ДКЪ ЯРПНЙ, ЙНРНПШЛ ОПЕДЬЕЯРБНБЮКЮ ЯРПНЙЮ, ЯННРБЕРЯРБСЧЫЮЪ НАПЮГЕЖ-1, МН ОПЕДЬЕЯРБСЧЫХЛ ЯРПНЙЕ, ЯННРБЕРЯРБСЧЫЕИ НАПЮГЕЖ-2.

яОЕЖХЮКЭМШЕ ЯХЛБНКШ BEGIN, END НАНГМЮВЮЧР МЮВЮКН Х ЙНМЕЖ ТЮИКЮ ББНДЮ. я ХУ ОНЛНЫЭЧ ЛНФМН БШОНКМХРЭ ДН МЮВЮКЮ ДЕИЯРБХРЕКЭМНИ ПЮАНРШ awk ФЕКЮЕЛШЕ ДЕИЯРБХЪ ОН МЮЯРПНИЙЕ awk, Ю ОН ГЮБЕПЬЕМХЧ ПЮАНРШ -- БШДЮРЭ ЙЮЙСЧ-КХАН ХРНЦНБСЧ ХМТНПЛЮЖХЧ.

дЕИЯРБХЪ awk

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

рЕКН ДЕИЯРБХЪ Б awk ОПЕДЯРЮБКЪЕР ЯНАНИ ОПНЦПЮЛЛС МЮ ЪГШЙЕ awk, Б ЙНРНПНЛ ОПХЯСРЯРБСЧР ЛМНЦХЕ ХГ ЮРРПХАСРНБ ЪГШЙЮ ОПНЦПЮЛЛХПНБЮМХЪ: ОПХЯБНЕМХЪ, БШПЮФЕМХЪ, СЯКНБМШЕ НОЕПЮРНПШ, ЖХЙКШ, НОЕПЮРНПШ ББНДЮ-БШБНДЮ, ЙНЛЮМДШ ПЮАНРШ Я ТЮИКНБНИ ЯХЯРЕЛНИ Х ОП. йНЛЮМДШ awk ЛНЦСР ЦПСООХПНБЮРЭЯЪ Я ОНЛНЫЭЧ РЕУ ФЕ ЯЮЛШУ ТХЦСПМШУ ЯЙНАНЙ {} Х НАПЮГНБШБЮРЭ ЯНЯРЮБМШЕ НОЕПЮРНПШ.

й БНЯРНПЦС ОНЙКНММХЙНБ ЯРПСЙРСПМНЦН ОПНЦПЮЛЛХПНБЮМХЪ Б awk НРЯСРЯРБСЕР НОЕПЮРНП GOTO Х ЛЕРЙХ.

оНДПНАМЕЕ ЙНЛЮМДШ awk ПЮЯЯЛНРПЕМШ Б ЯКЕДСЧЫЕЛ ПЮГДЕКЕ.

йНЛЮМДШ awk

оНЯКЕ РНЦН, ЙЮЙ awk ОПНВЕК НВЕПЕДМСЧ ГЮОХЯЭ Х ПЮГДЕКХК ЕЕ МЮ ОНКЪ, ЯНДЕПФХЛНЕ ЩРХУ ОНКЕИ ЯРЮМНБХРЭЯЪ ДНЯРСОМШЛ ЙЮЙ ГМЮВЕМХЪ ЯОЕЖХЮКЭМШУ ОЕПЕЛЕММШУ $1, $2, .... оПХ ЩРНЛ $1 ЯННРБЕРЯРБСЕР ОЕПБНЛС ОНКЧ, $2 -- БРНПНЛС Х Р.Д. дЮКЕЕ Я ЩРХЛХ ОЕПЕЛЕММШЛХ ЛНЦСР АШРЭ ОПНХГБЕДЕМШ ПЮГКХВМШЕ НОЕПЮЖХХ, ХЯОНКЭГСЪ МЮАНП ЙНЛЮМД awk. оПНЦПЮЛЛЮ awk ОПЕДНЯРЮБКЪЕР ОНКЭГНБЮРЕКЧ ЬХПНЙХИ МЮАНП ЙНЛЮМД, НАЕЯОЕВХБЮЧЫХИ БШОНКМЕМХЕ ДНЯРЮРНВМН ОНКМНЦН ПЕОЕПРСЮПЮ НОЕПЮЖХИ Я ББНДХЛШЛХ ДЮММШЛХ.

бБНД ДЮММШУ Б awk

оН СЛНКВЮМХЧ awk ВХРЮЕР Я СЯРПНИЯРБЮ ЯРЮМДЮПРМНЦН ББНДЮ (ЙКЮБХЮРСПЮ), НДМЮЙН ЛНФЕР ВХРЮРЭ Х ОНДЦНРНБКЕММШИ ГЮПЮМЕЕ ТЮИК ДЮММШУ ХКХ ЙНМБЕИЕПМШИ БШБНД ДПСЦНИ ОПНЦПЮЛЛШ.

б ЯРПНЙЕ БШГНБЮ awk ЛНФМН СЙЮГЮРЭ МЕЯЙНКЭЙН ТЮИКНБ ДЮММШУ, awk АСДЕР ОНЯКЕДНБЮРЕКЭМН ХУ НАПЮАЮРШБЮРЭ. хЛЪ РЕЙСЫЕЦН ТЮИКЮ ББНДЮ ДНЯРСОМН ЙЮЙ ГМЮВЕМХЕ ОЕПЕЛЕММНИ FILENAME.

щРХ АЮГНБШЕ БНГЛНФМНЯРХ awk ОН ББНДС ДЮММШУ ЛНЦСР АШРЭ ЯСЫЕЯРБЕММН ПЮЯЬХПЕМШ ХЯОНКЭГНБЮМХЕЛ ТСМЙЖХХ (ХКХ ЙНЛЮМДШ) getline.

хЯОНКЭГНБЮММЮЪ АЕГ ЮПЦСЛЕМРНБ, getline ОПНЯРН ВХРЮЕР НВЕПЕДМСЧ ГЮОХЯЭ ХГ РЕЙСЫЕЦН ТЮИКЮ ББНДЮ. щРН ОНГБНКЪЕР, МЮОПХЛЕП, ЯОЕЖХЮКЭМШЛ НАПЮГНЛ НАПЮАНРЮРЭ ЯКЕДСЧЫСЧ ЯРПНЙС, ЕЯКХ БШ, МЮОПХЛЕП, НАМЮПСФХКХ БН БУНДМШУ ДЮММШУ ЯННАЫЕМХЕ РХОЮ:

TOP SECRET!  NEXT LINE TO BE BURNED BEFORE READING!

оНЯКЕ БШОНКМЕМХЪ ЙНЛЮМДШ getline awk ОПНДНКФЮЕР МНПЛЮКЭМШИ ЖХЙК ЯБНЕИ ДЕЪРЕКЭМНЯРХ, ОПХЛЕМЪЪ Й ЩРНИ ГЮОХЯХ ОНЯКЕДСЧЫХЕ ОЮПШ НАПЮГЕЖ -- ДЕИЯРБХЕ.

йНЛЮМДЮ getline ЛНФЕР АШРЭ ХЯОНКЭГНБЮМЮ ДКЪ ББНДЮ ГМЮВЕМХЪ ЯРПНЙНБНИ ОЕПЕЛЕММНИ:

    getline message

мХЙЮЙХУ ОНАНВМШУ ЩТТЕЙРНБ ОПХ ЩРНЛ МЕ ОПНХЯУНДХР, ГЮ ХЯЙКЧВЕМХЕЛ РНЦН, ВРН ХГЛЕМЪЕРЯЪ ЯВЕРВХЙ ГЮОХЯЕИ NR.

йНЛЮМДЮ getline ЛНФЕР ВХРЮРЭ ХГ ОНХЛЕМНБЮММНЦН ТЮИКЮ, ХЯОНКЭГСЪ РЕУМХЙС ОЕПЕМЮОПЮБКЕМХЪ:

    getline < file

бШПЮФЕМХЕ file ЛНФЕР АШРЭ ОПНХГБНКЭМШЛ ЯРПНЙНБШЛ БШПЮФЕМХЕЛ, ЙНРНПШЕ ХМРЕПОПЕРХПСЧРЯЪ ЙЮЙ ХЛЪ ТЮИКЮ Б ДЮММНИ НОЕПЮЖХНММНИ ЯХЯРЕЛЕ.

еЯКХ getline МЕ БЯРПЕРХКЮ ЙЮЙХУ-КХАН ОПНАКЕЛ ОПХ ХЯОНКМЕМХХ, НМЮ БНГБПЮЫЮЕР ГМЮВЕМХЕ 1. еЯКХ ОПХ ХЯОНКМЕМХХ НАМЮПСФЕМ ЙНМЕЖ ТЮИКЮ, РН БНГБПЮЫЮЕРЯЪ 0, ЕЯКХ НАМЮПСФЕМЮ НЬХАЙЮ, РН БНГБПЮЫЮЕРЯЪ -1. б ОНЯКЕДМЕЛ ЯКСВЮЕ ОПХВХМС НЬХАЙХ ЛНФМН МЮИРХ, ОПНЮМЮКХГХПНБЮБ ГМЮВЕМХЕ ОЕПЕЛЕММНИ ERRNO.

оЕВЮРЭ (БШБНД) ДЮММШУ

нДМЮ ХГ МЮХАНКЕЕ СОНРПЕАХРЕКЭМШУ НОЕПЮЖХИ Я ББНДХЛШЛХ ДЮММШЛХ -- ЩРН ХУ ОЕВЮРЭ, БНГЛНФМН ЯЕКЕЙРХБМЮЪ Х ЯНОПНБНФДЮЕЛЮЪ МЕЙНРНПШЛХ ОПНЯРЕИЬХЛХ ОПЕНАПЮГНБЮМХЪЛХ. дКЪ ОЕВЮРХ awk ХЯОНКЭГСЕР НОЕПЮРНПШ print, printf, sprints. оПНЯРЕИЬХИ ХГ МХУ -- print ХЛЕЕР ЯХМРЮЙЯХЯ

    print a,b,c, ... z

ЦДЕ a, b, c, ..., z ЩРН ЯОХЯНЙ БШБНДЮ, ЙНРНПШИ ЛНФЕР БЙКЧВЮРЭ ПЮГКХВМШЕ ЯРПНЙНБШЕ Х ЮПХТЛЕРХВЕЯЙХЕ БШПЮФЕМХЪ.

мЮОПХЛЕП, Б ПЕГСКЭРЮРЕ ХЯОНКМЕМХЪ НОЕПЮРНПЮ

    print exp(1)

АСДЕР МЮОЕВЮРЮМН ВХЯКН

2.71828
Ю Б ПЕГСКЭРЮРЕ БШОНКМЕМХЪ НОЕПЮРНПЮ

    print "бЮЯЪ" "+" "лЮЬЮ"

АСДЕР МЮОЕВЮРЮМЮ ЯРПНЙЮ

бЮЯЪ+лЮЬЮ
нАПЮРХРЕ БМХЛЮМХЕ, ВРН МЮОЕВЮРЮКЮЯЭ ЙНМЙЮРЕМХПНБЮММЮЪ ЯРПНЙЮ, Р.Е.
"бЮЯЪ" "+" "лЮЬЮ"
ОПЕДЯРЮБКЪЕР ЯНАНИ ЯРПНЙНБНЕ БШПЮФЕМХЕ, ГМЮВЕМХЕЛ ЙНРНПНЦН ЪБКЪЕРЯЪ ЯРПНЙЮ "бЮЯЪ+лЮЬЮ".

еЯКХ ОЕВЮРЭ АСДЕР ОПНХГБНДХРЭЯЪ НОЕПЮРНПНЛ

    print "бЮЯЪ","+","лЮЬЮ"

ПЕГСКЭРЮР АСДЕР НАШВМН БШЦКЪДЕРЭ ЙЮЙ

бЮЯЪ + лЮЬЮ
гМЮВЕМХЪ ЯОХЯЙЮ БШБНДЮ ПЮГДЕКЕМШ Б ЩРНЛ ЯКСВЮЕ ОПНАЕКНЛ, ЙНРНПШЕ ЪБКЪЕРЯЪ ГМЮВЕМХЕЛ ОН СЛНКВЮМХЧ ЯОЕЖХЮКЭМНИ БМСРПЕММЕИ ОЕПЕЛЕММНИ OFS. щРЮ Х ДПСЦХЕ ЯОЕЖХЮКЭМШЕ ОЕПЕЛЕММШЕ awk АСДСР ПЮЯЯЛНРПЕМШ ОНГДМЕЕ, Ю ОНЙЮ ГЮЛЕРХЛ, ВРН ГМЮВЕМХЕ OFS ЛНФЕР АШРЭ ХГЛЕМЕМН ОНКЭГНБЮРЕКЕЛ. мЮОПХЛЕП, ЕЯКХ НОПЕДЕКХРЭ OFS="\n", РН РНР ФЕ НОЕПЮРНП ОЕВЮРХ БШДЮЯР ПЕГСКЭРЮР
бЮЯЪ
+
лЮЬЮ

нОЕПЮРНП

    print $1

БШБЕДЕР МЮ ОЕВЮРЭ ЯНДЕПФХЛНЕ ОЕПБНЦН, Ю НОЕПЮРНП

    print $NF

ОНЯКЕДМЕЦН ОНКЪ РЕЙСЫЕИ ГЮОХЯХ.

оН СЛНКВЮМХЧ ДКЪ БШБНДЮ ВХЯЕК awk ХЯОНКЭГСЕР Б ЙЮВЕЯРБЕ ТНПЛЮРЮ ГМЮВЕМХЕ ЯОЕЖХЮКЭМНИ БМСРПЕММЕИ ОЕПЕЛЕММНИ OFMT, НШВМН ХЛЕЧЫЕИ ГМЮВЕМХЕ "%.6g". хГЛЕМХБ ЩРН ГМЮВЕМХЕ, ЛНФМН ХГЛЕМХРЭ ТНПЛС БШБНДЮ ВХЯЕК, МЮОПХЛЕП, OFMT="%.0f" АСДЕР БШБНДХРЭ БЯЕ ВХЯКЮ ЙЮЙ ЖЕКШЕ, НЙПСЦКЪЪ ХУ ДН АКХФЮИЬЕЦН.

нОЕПЮРНПШ printf, sprintf НЯСЫЕЯРБКЪЧР ТНПЛЮРХПНБЮМШИ БШБНД Б ДСУЕ НОЕПЮРНПНБ БШБНДЮ ЪГШЙЮ C. дКЪ ЩРХУ НОЕПЮРНПНБ ОЕПБШЛ ЩКЕЛЕМРНЛ ЯОХЯЙЮ БШБНДЮ ЪБКЪЕРЯЪ ЯРПНЙЮ, ЯНДЕПФЮЫЮЪ НОХЯЮМХЕ ТНПЛЮРНБ БШБНДЮ ОНЯКЕДСЧЫХУ ЩКЕЛЕМРНБ ЯОХЯЙЮ. дКЪ НОХЯЮМХЪ ТНПЛЮРНБ ОПХЛЕМХЛШ ЯРЮМДЮПРМШЕ ОПЮБХКЮ ЪГШЙЮ C:

%s ЯРПНЙЮ ЯХЛБНКНБ
%d ДЕЯЪРХВМНЕ ЖЕКНЕ
%f БЕЫЕЯРБЕММНЕ ВХЯКН Я ДЕЯЪРХВМНИ РНВЙНИ
%o БНЯЭЛЕПХВМНЕ ВХЯКН
%x ЬЕЯРМЮДЖЮРХПХВМНЕ ВХЯКН
Х НАШВМШЕ ОПЮБХКЮ СЙЮГЮМХИ ЬХПХМШ БШБНДХЛНЦН ОНКЪ, ЙНКХВЕЯРБЮ ДЕЯЪРХВМШУ ГМЮЙНБ, БШПЮБМХБЮМХЪ Х ОП.

оПЕДНОПЕДЕКЕММШЕ ПЮГДЕКХРЕКХ OFS, ORS МЕ БКХЪЧР МЮ БШБНД, НЯСЫЕЯРБКЪЕЛШИ ОНЯПЕДЯРБНЛ printf, Б ВЮЯРМНЯРХ Б ЙНМЖЕ ГЮОХЯХ МЕ ДНАЮБКЪЕРЯЪ ЮБРНЛЮРХВЕЯЙХ ЯХЛБНК ОЕПЕУНДЮ МЮ МНБСЧ ЯРПНЙС ( ГМЮВЕМХЕ ORS ОН СЛНКВЮМХЧ ).

яОЕЖХТХЙЮ НОЕПЮРНПЮ sprintf ГЮЙКЧВЮЕРЯЪ Б РНЛ, ВРН БШБНД ОПНХЯУНДХР МЕ БН БМЕЬМХИ ТЮИК, Ю БНГБПЮЫЮЕРЯЪ Б ЙЮВЕЯРБЕ ГМЮВЕМХЪ ТСМЙЖХХ sprintf. яННРБЕРЯРБЕММН ЯХМРЮЙЯХЯ sprintf БНЯОПНХГБНДХР БШГНБ ТСМЙЖХХ Б awk:

    pi = sprintf("%f10.6", 4*atan(1))

ОПХЯБЮХБЮЕР ЯРПНЙНБНИ ОЕПЕЛЕММНИ pi ГМЮВЕМХЕ " 3.141592".

бШБНД НОЕПЮРНПНБ print, printf ЛНФЕР АШРЭ ОЕПЕМЮОПЮБКЕМ ЯРЮМДЮПРМШЛ ДКЪ UNIX НАПЮГНЛ. жЕКЭЧ РЮЙНЦН ОЕПЕМЮЮОПЮБКЕМХЪ ЛНФЕР ЯКСФХРЭ ЙЮЙНИ-КХАН ОНХЛЕМНБЮММШИ ТЮИК ХКХ ДПСЦЮЪ ЙНЛЮМДЮ НОЕПЮЖХНММНИ ЯХЯРЕЛШ. б ЯКСВЮЕ ТЮИКЮ ПЕГСКЭРЮР ЙНЛЮМДШ print ХКХ printf ЛНФЕР КХАН ГЮРХПЮРЭ ОПЕДШДСЫЕЕ ЯНДЕПФЮМХЕ ТЮИКЮ, КХАН ДНОХЯШБЮРЭЯЪ Й МЕЛС. оЕПБНЕ НЯСЫЕЯРБКЪЕРЯЪ ЙНЛЮМДНИ

    print "бЮЯЪ+лЮЬЮ" > "message.of.the.day"

Ю БРНПНЕ -- ЙНЛЮМДНИ

    print "бЮЯЪ+лЮЬЮ" » "message.of.the.day"

яКЕДСЕР ХЛЕРЭ Б БХДС, ВРН ПЮГКХВХЕ ЛЕФДС ЩРХЛХ БЮПХЮМРЮЛХ ОЕПЕМЮОПЮБКЕМХЪ ЯСЫЕЯРБСЕР КХЬЭ ДН НРЙПШРХЪ ТЮИКЮ message.of.the.day Х ОЕПБНИ НОЕПЮЖХХ ГЮОХЯХ Б ЩРНР ТЮИК. оНЯКЕДСЧЫХЕ ОЕПЕМЮОПЮБКЕМХЪ АСДСР ДЮБЮРЭ РНР ФЕ ПЕГСКЭРЮР: МНБШЕ ОНПЖХХ БШБНДХЛНИ ХМТНПЛЮЖХХ АСДСР ДНОХЯШБЮРЭЯЪ Й ЯНДЕПФЮМХЧ ТЮИКЮ. еЯКХ ЩРН МЕФЕКЮРЕКЭМН, МЕНАУНДХЛН Б ЪБМНЛ БХДЕ ГЮЙПШБЮРЭ ТЮИК Я ОНЛНЫЭЧ НОЕПЮРНПЮ close, ПЮЯЯЛНРПЕММНЦН МХФЕ.

оПНЦПЮЛЛЮ awk ДНОСЯЙЮЕР РЮЙФЕ Х ОЕПЕМЮОПЮБКЕМХЕ БШБНДЮ Б ЙНМБЕИЕП. б ЩРНЛ ЯКСВЮЕ НОПЕЮРНП БШБНДЮ ХЛЕЕР БХД

    printf A, B, C, ... | CMD

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

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

еЯКХ ТЮИКШ Х ЙНМБЕИЕПШ НРЙПШБЮЧРЯЪ awk ОН ЛЕПЕ МЕНАУНДХЛНЯРХ Х НЯРЮЧРЯЪ НРЙПШРШЛХ ДН НЙНМВЮМХЪ ПЮАНРШ ОПНЦПЮЛЛШ, РН ГЮЙПШРХЕ ТЮИКНБ НЯСЫЕЯРБКЪЕРЯЪ ЙНЛЮМДЮЛХ

close (filename) ГЮЙПШРЭ ТЮИК filename
close (COMMAND) ГЮЙПШРЭ ЙНМБЕИЕП COMMAND.
йЮЙ ЩРН ОПХМЪРН Б UNIX, awk МЮОПЮБКЪЕР БШБНД ОН ЙЮМЮКС ЯРЮМДЮПРМНЦН БШБНДЮ stdout. дКЪ БШБНДЮ ОН ЙЮМЮКС НЬХАНЙ stderr МСФМН ВРН-РН БПНДЕ

    print "ERROR" | " cat 1 > & 2"

б ПЮГМШУ БЕПЯХЪУ awk ХЯОНКЭГСЧРЯЪ ПЮГМШЕ РПЧЙХ ДКЪ ПЮАНРШ Я ЙЮМЮКЮЛХ. б ВЮЯРМНЯРХ, Б GAWK ХЯОНКЭГСЧРЯЪ ЯОЕЖХЮКЭМШЕ ХЛЕМЮ, ОПХБЕДЕММШЕ Б РЮАК. [*].

Table: нОХЯЮРЕКХ ЯРЮМДЮПРМШУ ЙЮМЮКНБ ББНДЮ-БШБНДЮ
хЛЪ ЙЮМЮКЮ fd
/dev/stdin 0
/dev/stdout 1
/dev/stderr 2

дКЪ ПЮАНРШ Я ТЮИКНЛ, ХЛЕЧЫХЛ НОХЯЮРЕКЭ N, ХЯОНКЭГСЕРЯЪ РЮЙФЕ ЯХЛБНКХВЕЯЙНЕ ХЛЪ /dev/fd/N.

сЯКНБМНЕ БШОНКМЕМХЕ

сЯКНБМНЕ БШОНКМЕМХЕ НЯСЫЕЯРБКЪЕРЯЪ Я ОНЛНЫЭЧ НОЕПЮРНПЮ if-then-else ХЛЕЧЫЕЦН Б НАЫЕЛ ЯКСВЮЕ ЯКЕДСЧЫСЧ ТНПЛС:
          if (СЯКНБХЕ) then {
                            ДЕИЯРБХЕ-1
                            }
                       else {
                            ДЕИЯРБХЕ-2
                            }
еЯКХ ДЕИЯРБХЕ-1 ХКХ -2 ЯНДЕПФХР НДХМ ЕДХМЯРБЕММШИ НОЕПЮРНП, ТХЦСПМШЕ ЯЙНАЙХ МЕ РПЕАСЧРЯЪ.

й МЕЙНРНПНИ РПСДМН НАЗЪЯМХЛНИ НЯНАЕММНЯРХ awk НРМНЯХРЯЪ РН, ВРН ЕЯКХ ДЕИЯРБХЕ-1 ЯНДЕПФХР НДХМ НОЕПЮМД, РН ГЮ МХЛ ДНКФМЮ ЯКЕДНБЮРЭ РНВЙЮ Я ГЮОЪРНИ (;).

жХЙКШ

awk ЯНДЕПФХР УНПНЬН ХГБЕЯРМШИ C-ОПНЦПЮЛЛХЯРЮЛ МЮАНП НОЕПЮРНПНБ ЖХЙКЮ: do-while, while, for.

жХЙК do-while ХЛЕЕР БХД

do {
    РЕКН ЖХЙКЮ
} while (СЯКНБХЕ)
ЦДЕ РЕКН ЖХЙКЮ ХЯОНКЭГСЕРЯЪ ОН ЙПЮИМЕИ ЛЕПЕ НДХМ ПЮГ Х ДН РЕУ ОНП ОНЙЮ СЯКНБХЕ НЯРЮЕРЯЪ ХЯРХММШЛ.

жХЙК while ХЛЕЕР БХД

while (СЯКНБХЕ) {
      РЕКН ЖХЙКЮ
}
Х ОПНБЕПЙЮ СЯКНБХЪ НЯСЫЕЯРБКЪЕРЯЪ ДН ХЯОНКМЕМХЪ РЕКЮ ЖХЙКЮ.

жХЙК for ХЛЕЕР ДБЕ ТНПЛШ Б awk: НДМЮ -- РПЮДХЖХНММЮЪ:

for(ХМХЖХЮКХГЮЖХЪ; СЯКНБХЪ; ГЮБЕПЬЕМХЕ){
    РЕКН ЖХЙКЮ
}
Х БРНПЮЪ -- ЮЯЯНЖХЮРХБМЮЪ:
for(index in list){
    РЕКН ЖХЙКЮ
}
ЦДЕ list - ЮЯЯНЖХЮРХБМШИ ЛЮЯЯХБ, ОНДПНАМНЯРХ ПЮАНРШ Я ЙНРНПШЛХ АСДСР ПЮЯЯЛНРПЕМШ МХФЕ. мЮ ЯНДЕПФЮРЕКЭМНЛ СПНБМЕ БРНПЮЪ ТНПЛЮ НОЕПЮРНПЮ for НГМЮВЮЕР ХЯОНКЭГНБЮМХЕ РЕКЮ ЖХЙКЮ ДКЪ ЙЮФДНЦН ЩКЕЛЕМРЮ ЮЯЯНЖХЮРХБМНЦН ЛЮЯЯХБЮ list. оНПЪДНЙ ХЯОНКМЕМХЪ МЕОПЕДЯЙЮГСЕЛ.

б ОПХБЕДЕММШУ ЙНМЯРПСЙЖХЪУ ТХЦСПМШЕ ЯЙНАЙХ {} МЕНАЪГЮРЕКЭМШ ЕЯКХ РЕКН ЖХЙКЮ ОПЕДЯРЮБКЪЕР ЯНАНИ НДХМ НОЕПЮРНП.

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

дКЪ ДНЯПНВМНЦН ОПЕЙПЮЫЕМХЪ ЩРНЦН ОПНЖЕЯЯЮ НАПЮАНРЙХ ЯКСФХР НОЕПЮРНП exit. нМ ОН ЯСРХ ДЕКЮ ЩЙБХБЮКЕМРЕМ ОПЕПШБЮМХЧ РЕЙСЫХУ НОЕПЮЖХИ НАПЮАНРЙХ Х ВРЕМХЧ ОПХГМЮЙЮ ЙНМЖЮ БУНДМНЦН ТЮИКЮ (EOF ДКЪ C-ОЮРПХНРНБ). еЯКХ Б awk-ОПНЦПЮЛЛЕ ЕЯРЭ ДЕИЯРБХЪ, ЮЯЯНЖХХПНБЮММШЕ Я НАПЮГНЛ END, НМХ АСДСР БШОНКМЕМШ.

дКЪ ДНЯПНВМНЦН ОПЕПШБЮМХЪ ОПНЖЕЯЯЮ НАПЮАНРЙХ РЕЙСЫЕИ ГЮОХЯХ (Х ГЮОСЯЙЮ МНБНИ НОЕПЮЖХХ ВРЕМХЪ - НАПЮАНРЙХ) ЯКСФХР НОЕПЮРНП next. дКЪ СОПЮБКЕМХЪ ЖХЙКЮЛХ, Б ЪБМНЛ БХДЕ ЯНДЕПФЮЫХЛХЯЪ Б awk-ОПНЦПЮЛЛЮУ, ЯКСФЮР НОЕПЮРНПШ break, continue. нОЕПЮРНП break ОПЕЙПЮЫЮЕР БШОНКМЕМХЕ ЖХЙКЮ, continue ГЮОСЯЙЮЕР МНБНЕ ХЯОНКМЕМХЕ РЕКЮ ЖХЙКЮ.

й НОЕПЮРНПЮЛ СОПЮБКЕМХЪ ОНЯКЕДНБЮРЕКЭМНЯРЭЧ НОЕПЮЖХИ Я МЕЙНРНПНИ МЮРЪФЙНИ ЛНФМН НРМЕЯРХ Х return -- НОЕПЮРНП БНГБПЮРЮ ХГ ТСМЙЖХХ, НОХЯЮММНИ ОПНЦПЮЛЛХЯРНЛ. нОЕПЮРНП

    return БШПЮФЕМХЕ

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

лЮЯЯХБШ

нРКХВХРЕКЭМНИ ВЕПРНИ awk ЪБКЪЕРЯЪ ЯБНЕНАПЮГМНЕ ОНМЪРХЕ ЛЮЯЯХБЮ. б РПЮДХЖХНММШУ ЪГШЙЮУ ОПНЦПЮЛЛХПНБЮМХЪ РХОЮ C ХКХ Fortran ЛЮЯЯХБ A ОПЕДЯРЮБКЪЕР ЯНАНИ Я ЛЮРЕЛЮРХВЕЯЙНИ РНВЙХ ГПЕМХЪ ТСМЙЖХЧ ЖЕКНВХЯКЕММНИ ОЕПЕЛЕММНИ-ХМДЕЙЯЮ. б awk ОЕПЕЛЕММЮЪ-ХМДЕЙЯ ЛНФЕР АШРЭ Л ЯРПНЙНИ ХКХ ЯРПНЙНБШЛ БШПЮФЕМХЕЛ, Р.Е. ЛЮЯЯХБ ОПЕДЯРЮБКЪЕР ЯНАНИ ТСМЙЖХЧ, НОПЕДЕКЕММСЧ МЮ ЯСЫЕЯРБЕММН АНКЭЬЕЛ ЛМНФЕЯРБЕ Х, ЯКЕДНБЮРЕКЭМН, ОПЕДНЯРЮБКЪЕР ОПНЦПЮЛЛХЯРС ГМЮВХРЕКЭМН АНКЭЬХЕ БШПЮГХРЕКЭМШЕ БНГЛНФМНЯРХ.

мЮОПХЛЕП, ЕЯКХ ОЕПЕД БЮЛХ ЯРНХР ГЮДЮВЮ ПЮГНАПЮРЭ РЕЙЯРНБШИ ТЮИК-РЮАКХЖС, Б ЙНРНПНИ, ЯЙЮФЕЛ, Б ОЕПБНЛ ЯРНКАЖЕ МЮУНДХРЯЪ ТЮЛХКХЪ ПЮАНРМХЙЮ, ОНКСВХБЬЕЦН БНГМЮЦПЮФДЕМХЕ, НАЭЕЛ ЙНРНПНЦН МЮУНДХРЯЪ Б ЯЕДЭЛНЛ ЯРНКАЖЕ РЮАКХЖШ Х РПСАСЕРЯЪ НОПЕДЕКХРЭ ЯСЛЛЮПМНЕ БНГМЮЦПЮФДЕМХЕ ДКЪ ЙЮФДНЦН ХГ ПЮАНРЮЧЫХУ, awk ПЕЬЮЕР ЩРС ГЮДЮВС Я ОНРПЪЯЮЧЫЕИ КЕЦЙНЯРЭЧ:

    { payoff[$1] += $7 }

Х ОПНАКЕЛЮ НЯРЮЕРЯЪ КХЬЭ Б БШБНДЕ ГМЮВЕМХИ ЛЮЯЯХБЮ payoff ОН ГЮБЕПЬЕМХЧ ПЮАНРШ ОПНЦПЮЛЛШ.

йНМЕВМН, ДКЪ РЮЙНЦН ОНМЪРХЪ ЛЮЯЯХБЮ РПСДМН ББЕЯРХ ОПЕДБЮПХРЕКЭМНЕ ДЕЙКЮПХПНБЮМХЕ Х ЩКЕЛЕМРШ ЛЮЯЯХБНБ Б awk ЯНГДЮЧРЯЪ Б ЛНЛЕМР ХЯОНКЭГНБЮМХЪ. оН ХЯВЕПОШБЮМХЧ МЕНАУНДХЛНЯРХ Б ЩРНЛ ЩКЕЛЕМРЕ, НР МЕЦН ЛНФМН Б ЪБМНЛ БХДЕ ХГАЮБХРЭЯЪ ОПХ ОНЛНЫХ НОЕПЮРНПЮ delete:

    delete payoff["хБЮМНБ"]

Х НЯБНАНДХРЭ ОЮЛЪРЭ ДКЪ АНКЕЕ БЮФМШУ ДЕК. сДЮКХРЭ БЕЯЭ ЛЮЯЯХБ payoff ЛНФМН ЙНЛЮМДНИ

    delete payoff

нОПЕДЕКЕМХЕ ЛМНФЕЯРБЮ ХМДЕЙЯНБ ДЮММНЦН ЛЮЯЯХБЮ Х НАУНД ЩКЕЛЕМРНБ ЛЮЯЯХБЮ ЛНФМН ОПНХГБЕЯРХ Я ОНЛНЫЭЧ ЮЯЯНЖХЮРХБМНЦН ЖХЙКЮ, СФЕ СОНЛЪМСРНЦН БШЬЕ. нРПШБНЙ awk-ОПНЦПЮЛЛШ

END	{
	for(name in payoff)
		printf name, payoff[name]
	}
ЙЮЙ ПЮГ Х ОНГБНКХР ОН ГЮБЕПЬЕМХЧ ПЮАНРШ ОПНЦПЮЛЛШ ЯСЛЛХПНБЮМХЪ БНГМЮЦПЮФДЕМХИ ПЮЯОЕВЮРЮРЭ ЯОХЯНЙ ХЛЕМ ПЮАНРЮЧЫХУ Х ХУ ЯСЛЛЮПМНЕ БНГМЮЦПЮФДЕМХЕ.

еДХМЯРБЕММШЛ МЕДНЯРЮРЙНЛ РЮЙНЦН ОПНЯРНЦН ПЕЬЕМХЪ ЪБКЪЕРЪ МЕНОПЕДЕКЕММШИ ОНПЪДНЙ ХМДЕЙЯНБ ЛЮЯЯХБЮ payoff, Б ЯБЪГХ Я ВЕЛ ХУ ХЛЕМЮ ОНВРХ МЮБЕПМЪЙЮ МЕ АСДСР БШБЕДЕМШ Б ЮКТЮБХРМНЛ ОНПЪДЙЕ !

оПНЯРШЛ БШУНДНЛ ХГ ОНКНФЕМХЪ АСДЕР ГЮОСЯЙ ЙЮЙНИ-КХАН БМЕЬМЕИ ОПНЦПЮЛЛШ ЯНПРХПНБЙХ РЕЙЯРНБШУ ТЮИКНБ, ЙНРНПЮЪ ДНЯРЮРНВМН ПЮГСЛМЮ ДКЪ РНЦН, ВРНАШ ГМЮРЭ Н ЯСЫЕЯРБНБЮМХХ ПСЯЯЙНЦН ЮКТЮБХРЮ.

еЫЕ НДМХЛ ВЮЯРН БЯРПЕВЮЧЫХЛЯЪ ЯОНЯНАНЛ ОНПНФДЕМХЪ ЛЮЯЯХБНБ ЪБКЪЕРЯЪ ХЯОНКЭГНБЮМХЕ БЯРПНЕММНИ ТСМЙЖХХ split. щРЮ ТСМЙЖХЪ ЛНФЕР ХЛЕРЭ ДБЮ ХКХ РПХ ЮПЦСЛЕМРЮ Х ХЯОНКЭГСЕРЯЪ ДКЪ ПЮГАХЕМХЕ ЙЮЙНИ-КХАН ЯРПНЙХ МЮ НРДЕКЭМШЕ ВЮЯРХ, ГЮОНКМЪЧЫХЕ ЯНАНИ ЛЮЯЯХБ.

мЮОПХЛЕП, НОЕПЮРНП

    n = split("31.12.1999", date, ".")

ПЮГНАЭЕР ЯРПНЙС "31.12.1999" МЮ РПХ ВЮЯРХ "31", "12", "1999", ХЯОНКЭГСЪ Б ЙЮВЕЯРБЕ ПЮГДЕКХРЕКЪ ЯХЛБНК "." Х ОПХЯБНХР ЛЮЯЯХБС date ГМЮВЕМХЪ:

date[1] = "31", date[2] = "12", date[3] = "1999".
оЕПЕЛЕММНИ n ОПХЯБНХРЯЪ, ЙНМЕВМН, ГМЮВЕМХЕ 3.

еЯКХ ТСМЙЖХЪ split БШГШБЮЕРЯЪ Я ДБСЛЪ ЮПЦСЛЕМЮЛХ, ОНДПЮГСЛЕБЮЕРЯЪ, ВРН ЯХЛБНКНЛ-ПЮГДЕКХРЕКЕЛ ЪБКЪЕРЯЪ ГМЮВЕМХЕ БЯРПНЕММНИ ОЕПЕЛЕММНИ awk FS -- ОН СЛНКВЮМХЧ ОПНАЕКЭМШИ ЯХЛБНК.

рЮЙХЛ НАПЮГНЛ

    nn = split($0, tokens)

Б ЪБМНЛ БХДЕ БШОНКМХР РС ПЮАНРС, ВРН awk ДЕКЮЕР ОН СЛНКВЮМХЧ: ПЮГДЕКХР БУНДМСЧ ЯРПНЙС ($0) МЮ НРДЕКЭМШЕ ЩКЕЛЕМРШ Х ГЮОХЬЕР ХУ Б ЛЮЯЯХБ tokens. йНКХВЕЯРБН ЩКЕЛЕМРНБ АСДЕР ГЮОНЛМЕМН, ЙЮЙ ГМЮВЕМХЕ ОЕПЕЛЕММНИ nn.

щРН ОНКМНЯРЭЧ ЩЙБХБЮКЕМРМН ЪБМНЛС ЖХЙКС

	for(i = 1; i <= NF; i++)
		tokens[i] = $i
	nn = NF
МН, ЙНМЕВМН, МЮЛМНЦН АНКЕЕ ЩТТЕЙРХБМН, ЩЙНМНЛХР ОЮЛЪРЭ Х АСЛЮЦС Х, ЯКЕДНБЮРЕКЭМН, ЯНУПЮМЪЕР НЙПСФЮЧЫСЧ ЯПЕДС.


тСМЙЖХХ

уНРЪ awk Х МЕКЭГЪ МЮГБЮРЭ ЯХКЭМН ЛНДСКЭМШЛ ЪГШЙНЛ, НМ РЕЛ МЕ ЛЕМЕЕ ЯНДЕПФХР ДНЯРЮРНВМН ПЮГБХРСЧ АХАКХНРЕЙС БЯРПНЕММШУ ТСМЙЖХИ Х ДЮЕР БНГЛНФМНЯРЭ ОНКЭГНБЮРЕКЧ НОПЕДЕКХРЭ ЯБНХ ЯНАЯРБЕММШЕ ТСМЙЖХХ.

бЯРПНЕММШЕ ТСМЙЖХХ

ъГШЙ awk ОПЕДНЯРЮБКЪЕР ДНЯРЮРНВМН АНКЭЬНИ БШАНП БЯРПНЕММШУ ВХЯКНБШУ Х ЯРПНЙНБШУ ТСМЙЖХИ, ОПХБШВМШУ ДКЪ C-ОПНЦПЮЛЛХЯРЮ.

хУ НЯМНБМШЕ УЮПЮЙРЕПХЯРХЙХ ОПХБЕДЕМШ Б РЮАК. [*].
рЮАКХЖЮ [*]. бЯРПНЕММШЕ ТСМЙЖХХ ЪГШЙЮ awk
   
вХЯКЕММШЕ ТСМЙЖХХ
   
atan2 ЮПЙРЮМЦЕМЯ
cos ЙНЯХМСЯ
exp ЩЙЯОНМЕМРЮ
int ЖЕКНВХЯКЕММНЕ НЙПСЦКЕМХЕ
log МЮРСПЮКЭМШИ КНЦЮПХТЛ
rand ОЯЕБДНЯКСВЮИМНЕ ВХЯКН ХГ ХМРЕПБЮКЮ $[0,1]$
sin ЯХМСЯ
sqrt ЙБЮДПЮРМШИ ЙНПЕМЭ
srand ХМЖХЮКХГЮЖХЪ ЯКСВЮИМНЦН ДЮРВХЙЮ
яРПНЙНБШЕ ТСМЙЖХХ
   
sub, gsub БШДЕКЕМХЕ ОНДЯРПНЙХ
index ОНХЯЙ ЛЕРЮ Б ЯРПНЙЕ
length ДКХМЮ ЯРПНЙХ
match ОПНБЕПЙЮ МЮ МЮКХВХЕ ОНДЯРПНЙХ
split ПЮГАХБЙЮ ЯРПНЙХ МЮ ЩКЕЛЕМРШ
substr БШДЕКЕМХЕ ОНДЯРПНЙХ
tolower ОЕПЕБНД Б МХФМХИ ПЕЦХЯРП
toupper ОЕПЕБНД Б БЕПУМХИ ПЕЦХЯРП
тСМЙЖХХ, НОПЕДЕКЪЧЫХЕ ЯХЯРЕЛМНЕ БПЕЛЪ
systime() БНГБПЮЫЮЕР ВХЯКН ЯЕЙСМД, ОПНЬЕДЬХУ ЯН БПЕЛЕМХ МЕЙНРНПНЦН ГМЮЛЕМЮРЕКЭМНЦН Я РНВЙХ ГПЕМХЪ НОЕПЖХНММНИ ЯХЯРЕЛШ ЯНАШРХЪ. мЮ POSIX-ЯРЮМДЮПРМШУ ЯХЯРЕЛЮУ ЩРН БПЕЛЪ, ОПНЬЕДЬЕЕ Я ОНКМНВХ 1 ЪМБЮПЪ 1979 Ц. ОН цПХМБХВС.
strftime( \(\cdot, \cdot\)) БНГБПЮЫЮЕР ЯРПНЙНБНЕ ГМЮВЕМХЕ БПЕЛЕММНИ ЛЕРЙХ TIME (БРНПНИ ЮПЦСЛЕМР) Б ЯННРБЕРЯРБХХ Я ТНПЛЮРНЛ FORMAT (ОЕПБШИ ЮПЦСЛЕМР). дЕРЮКХ ЯКХЬЙНЛ СРНЛХРЕКЭМШ, ВРНАШ ХУ ХГКЮЦЮРЭ Б РЮЙНЛ ЛЮКНЛ НАЭЕЛЕ.
пЮГМНЕ
   
system(s) ЯРПНЙЮ s ХМРЕПОПЕРХПСЕРЯЪ ЙЮЙ ЙНЛЮМДЮ НОЕПЮЖХНММНИ ЯХЯРЕЛШ Х ХЯОНКМЪЕРЯЪ ЙНЛЮМДМШЛ ХМРЕПОПЕРЮРНПНЛ.
вХЯКЕММШЕ ТСМЙЖХХ ХЛЕЧР БОНКМЕ РПЮДХЖХНММШИ ЯЛШЯК, ГЮ ХЯЙКЧВЕМХЕЛ, ОНФЮКСИ, atan2(x,y) , ЙНРНПЮЪ БШВХЯКЪЕР $ \mbox{arctan}\, (x/y) $ ДКЪ $ y \neq 0 $ Х ПЮБМЮ $ \mbox{sign}(x)\pi/2 $ ДКЪ $ y=0, x \neq 0 $. гМЮВЕМХЕ atan2(0, 0) = 0.

цЕМЕПЮРНП ЯКСВЮИМШУ ВХЯЕК rand() ЛНФЕР АШРЭ ОПНХМХЖХЮКХГХПНБЮМ Я ОНЛНЫЭЧ ТСМЙЖХХ srand(x). оН СЛНКВЮМХЧ Б ЙЮВЕЯРБЕ x ХЯОНКЭГСЕРЯЪ БПЕЛЪ ДМЪ. еЯКХ rand() МЕ ХМХЖХЮКХГЮПСЕРЯЪ, РН ОПХ ОНБРНПМНЛ ХЯОНКМЕМХХ awk-ОПНЦПЮЛЛШ ЦЕМЕПХПСЕРЯЪ РЮ ФЕ ЯЮЛЮЪ ОНЯКЕДНБЮРЕКЭМНЯРЭ ВХЯЕК.

яРПНЙНБШЕ ТСМЙЖХХ ХЛЕЧР ЯКЕДСЧЫХИ ЯХМРЮЙЯХЯ Х ДЕИЯРБХЕ:

\(
\left.\begin{array}{l}
\mbox{sub}(s, t, u)\\ \mbox{sub}(s, t)
\end{array}\right\}
\)
ГЮЛЕМЪЧР Б ЯРПНЙЕ u ОЕПБНЕ БУНФДЕМХЕ ПЕЦСКЪПМНЦН БШПЮФЕМХЪ t МЮ ЯРПНЙС s. бШГНБ Я ДБСЛЪ ЮПЦСЛЕМРЮЛХ НГМЮВЮЕР, ВРН ЩРЮ НОЕПЮЖХЪ ОПХЛЕМЪЕРЯЪ Й РЕЙСЫЕИ ГЮОХЯХ $0.
\(
\left.\begin{array}{l}
\mbox{gsub}(s, t, u)\\ \mbox{gsub}(s, t)
\end{array}\right\}
\)
-- ЮМЮКНЦХВМЮ sub, МН ГЮЛЕМЪЧРЯЪ БЯЕ БУНФДЕМХЪ t.
\(\mbox{length}(s)\)
-- ЖЕКНВХЯКЕММЮЪ ТСМЙЖХЪ, БНГБПЮЫЮЧЫЮЪ Б ЙЮВЕЯРБЕ ГМЮВЕМХЪ ДКХМС ЯРПНЙХ s.
\(
\left.\begin{array}{l}
\mbox{substr}(s, m, n)\\ \mbox{substr}(s, m)
\end{array}\right\}
\)
БНГБПЮЫЮЧР Б ЙЮВЕЯРБЕ ГМЮВЕМХЪ ОНДЯРПНЙС ЯРПНЙХ s, МЮВХМЮЧЫСЧЯЪ Я \(m\)-ЦН ЯХЛБНКЮ Х ХЛЕЧЫСЧ \(\min(\mbox{length}(s)-m+1, n)\) ЯХЛБНКНБ. еЯКХ n НРЯРСЯРБСЕР, ЯВХРЮЕРЯЪ \( n > \mbox{length}(s) \).
\(\mbox{match}(s,t)\)
ОПНБЕПЪЕР, ЯНДЕПФХР КХ ЯРПНЙЮ s ПЕЦСКЪПМНЕ БШПЮФЕМХЕ t. еЯКХ s ЯНДЕПФХР t, РН match(s,t) СЙЮГШБЮЕР МЮ МЮВЮКН ОЕПБНЦН БУНФДЕМХЪ t Б s. еЯКХ s МЕ ЯНДЕПФХР t, РН match(s,t) = 0.
\(\mbox{length}(s)\)
ЖЕКНВХЯКЕММЮЪ ТСМЙЖХЪ, БНГБПЮЫЮЧЫЮЪ Б ЙЮВЕЯРБЕ ГМЮВЕМХЪ ДКХМС ЯРПНЙХ s.
\(\mbox{index}(s,t)\)
ОПНБЕПЪЕР, ЯНДЕПФХР КХ ЯРПНЙЮ s ЯРПНЙС t. еЯКХ s ЯНДЕПФХР t, РН index(s,t) СЙЮГШБЮЕР МЮ МЮВЮКН ОЕПБНЦН БУНФДЕМХЪ t Б s. еЯКХ s МЕ ЯНДЕПФХР t, РН index(s,t) = 0.
\(
\left.
\begin{array}{l}
\mbox{toupper}(s)\\ \mbox{tolower}(s)
\end{array}\right\}
\)
ОЕПЕБНДЪР ЯРПНЙС s Б БЕПУМХИ (МХФМХИ) ПЕЦХЯРПШ.

тСМЙЖХХ, НОПЕДЕКЪЕЛШЕ ОПНЦПЮЛЛХЯРНЛ

б awk ОПНЦПЮЛЛХЯР ЛНФЕР НОПЕДЕКХРЭ ЯБНХ ЯНАЯРБЕММШЕ ТСМЙЖХХ, ХЯОНКЭГСЪ ЯХМРЮЙЯХЯ
function FunctionName(a, b, ..., z)
	{
	... РЕКН ТСМЙЖХХ ...
	}
нРМНЯХРЕКЭМН ХЛЕМХ ТСМЙЖХХ Х ХЛЕМ ОЕПЕЛЕММШУ БШОНКМЪЧРЯЪ НАШВМШЕ ЯНЦКЮЬЕМХЪ Н ДНОСЯРХЛШУ ХДЕМРХТХЙЮРНПЮУ Б awk.

рЕКН ТСМЙЖХХ ОПЕДЯРЮБКЪЕР ЯНАНИ МЮАНП awk-ЙНЛЮМД, ОПХЛЕМЪЕЛШУ Й ЯОХЯЙС ОЮПЮЛЕРПНБ ГЮЦНКНБЙЮ ТСМЙЖХХ. тСМЙЖХЪ ЛНФЕР АШРЭ ''ПЕЙЙСПЯХБМНИ'', БШГШБЮЪ ЯЮЛНЕ ЯЕАЪ. йНКХВЕЯРБН ЮПЦСЛЕМРНБ Б ТЮЙРХВЕЯЙНЛ БШГНБЕ ТСМЙЖХХ ЛНФЕР НРКХВЮРЭЯЪ НР ЙНКХВЕЯРБЮ ЮПЦСЛЕМРНБ Б НОХЯЮМХХ. ''кХЬМХЕ'' ОЕПЕЛЕММШЕ ОНКСВЮЧР Б ЙЮВЕЯРБЕ ГМЮВЕМХИ ОСЯРСЧ ЯРПНЙС "". оПХ БШГНБЕ ТСМЙЖХХ Б awk-ОПНЦПЮЛЛЕ МЕ ДНКФМН АШРЭ МХЙЮЙХУ ЯХЛБНКНБ ( Б РНЛ ВХЯКЕ Х ОПНАЕКЭМШУ ) ЛЕФДС ХЛЕМЕЛ ТСМЙЖХХ Х ЯОХЯЙНЛ ЮПЦСЛЕМРНБ Б ЯЙНАЙЮУ.

б awk ХЯОНКЭГСЕРЯЪ ЛЕУЮМХГЛ ОЕПЕДЮВХ ОЮПЮЛЕРПНБ ''ОН ГМЮВЕМХЧ'', РЮЙ ВРН БЯЪЙХЕ ХГЛЕМЕМХЪ, ОПНХЯУНДЪЫХЕ Я ЮПЦСЛЕМРЮЛХ Б ТСМЙЖХХ, МЕ ХГЛЕМЪЧР ГМЮВЕМХИ ЩРХУ ОЕПЕЛЕММШУ БМЕ ТСМЙЖХХ.

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

оЕПЕЛЕММШЕ

оЕПЕЛЕММШЕ ЪГШЙЮ awk ЛНЦСР АШРЭ ПЮГДЕКЕМШ МЮ ДБЮ ЙКЮЯЯЮ: БЯРПНЕММШЕ Б ЪГШЙ Х НОПЕДЕКЪЕЛШЕ ОПНЦПЮЛЛХЯРНЛ. оЕПБШЕ ХГ МХУ ХЛЕЧР ТХЙЯХПНБЮММШЕ ХЛЕМЮ Х ЯОЕЖХЮКЭМШЛ НАПЮГНЛ БКХЪЧР МЮ ПЮАНРС awk. бРНПШЕ ХЯОНКЭГСЧРЯЪ РПЮДХЖХНММШЛ НАПЮГНЛ ДКЪ УПЮМЕМХЪ Х ХЯОНКЭГНБЮМХЪ ЙЮЙХУ-КХАН ОПНЛЕФСРНВМШУ ПЕГСКЭРЮРНБ.

бЯРПНЕММШЕ ОЕПЕЛЕММШЕ

б ОНЯКЕДСЧЫЕИ РЮАКХЖЕ ОПХБЕДЕМШ БЯРПНЕММШЕ ОЕПЕЛЕММШЕ ПЪДЮ ДХЮКЕЙРНБ awk.
йЮМНМХВЕЯЙНЕ ЛМНФЕЯРБН
FILENAME ХЛЪ ТЮИКЮ, НАПЮАЮРШБЮЕЛНЦН awk Б МЮЯРНЪЫХИ ЛНЛЕМР
FS ПЮГДЕКХРЕКЭ ОНКЕИ Б ГЮОХЯХ
NF ЙНКХВЕЯРБН ОНКЕИ Б РЕЙСЫЕИ ГЮОХЯХ
NR МНЛЕП РЕЙСЫСИ ГЮОХЯХ
OFS ПЮГДЕКХРЕКЭ ОНКЕИ ОПХ БШБНДЕ
ORS ПОГДЕКХРЕКЭ ГЮОХЯЕИ ОПХ БШБНДЕ
RS ПЮГДЕКХРЕКЭ ГЮОХЯЕИ
$0 ЮДПЕЯСЕР БЯЧ ГЮОХЯЭ ЖЕКХЙНЛ
$n ЮДПЕЯСЕР $n$-НЕ ОНКЕ Б ГЮОХЯХ
gawk
ARGV ЛЮЯЯХБ ЮПЦСЛЕМРНБ ЙНЛЮМДМНИ ЯРПНЙХ
ARGC ЙНКХВЕЯБРН ЮПЦСЛЕМРНБ ЙНЛЮМДМНИ ЯРПНЙХ
CONVFMT ТНПЛЮР БМСРПЕММЕЦН ОПЕНАПЮГНБЮМХЪ ''ВХЯКН'' $\to$ ''ЯРПНЙЮ''
ENVIRON ЛЮЯЯХБ ОЕПЕЛЕММШУ ЯПЕДШ
FNR МНЛЕП ГЮОХЯХ Б РЕЙСЫЕЛ ТЮИКЕ
IGNORECASE ЕЯКХ ЩРЮ ОЕПЕЛЕММЮЪ МЕОСЯРЮ, РН БЯЕ ЯПЮБМЕМХЪ awk ОПНБНДХР ХЦМНПХПСЪ ПЮГМХЖС ЛЛЕФДС АСЙБЮЛХ Б БЕПУМЕЛ Х МХФМЕЛ ПЕЦХЯРПЮУ
OFMT ТНПЛЮР БШБНДЮ ДКЪ ВХЯЕК
RSTART ОНКНФЕМХЕ ОЕПБНЦН ЯНБОЮДЕМХЪ, МЮИДЕМНЦН ЙНЛЮМДНИ match
RLENGTH ДКХМЮ ЯНБОЮДЕМХЪ, МЮИДЕМНЦН ЙНЛЮМДНИ match
SUBSEP ЯХЛБНК-ПЮГДЕКХРЕКЭ ДКЪ ХМДЕЙЯНБ ЛЮЯЯХБНБ
бЮЬ КНЙЮКЭМШИ БЮПХЮМР awk ЛНФЕР ХЛЕРЭ ДНОНКМХРЕКЭМШЕ ОЕПЕЛЕММШЕ, ХКХ Б МЕЛ ЛНЦСР НРЯСРЯРБНБЮРЭ ЙЮЙХЕ КХАН ХГ ОПХБЕДЕММШУ БШЬЕ. я ДЕРЮКЪЛХ КСВЬЕ НГМЮЙНЛХРЭЯЪ ОН ЯННРБЕРЯРБСЧЫЕЛС ПСЙНБНДЯРБС.

оЕПЕЛЕММШЕ, НОПЕДЕКЪЕЛШЕ ОПНЦПЮЛЛХЯРНЛ

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

оЕПЕЛЕММШЕ, ХЯОНКЭГСЕЛШЕ Б ОПНЦПЮЛЛЮУ awk, МЕ РПЕАСЧР ОПЕДБЮПХРЕКЭМНЦН ДЕЙКЮПХПНБЮМХЪ Х ХУ РХО НОПЕДЕКЪЕРЯЪ ЙНМРЕЙЯРНЛ ХЯОНКЭГНБЮМХЪ. оЕПЕЛЕММЮЪ box ЛНФЕР АШРЭ ОПНХМХЖХЮКХГХПНБЮМЮ ЯРПНЙНИ "4":

	box = "4"
ГЮРЕЛ Я МЕИ ЛНФМН БШОНКМХРЭ ЮПХТЛЕРХВЕЯЙНЕ ДЕИЯРБХЕ
	box = box*4
Х ГЮРЕЛ ЯРПНЙНБСЧ НОЕПЮЖХЧ ( МЮОПХЛЕП, ЙНМЙЮРЕМЮЖХЧ )
	box = box " boxes of candies"
Б ПЕГСКЭРЮРЕ ВЕЦН ОЕПЕЛЕММЮЪ box ОПХЛЕР ГМЮВЕМХЕ "16 boxes of candies".

оПЕНАПЮГНБЮМХЕ ХГ ЯРПНЙНБНЦН Б ВХЯКНБНИ РХО Х НАПЮРМН ОПНХЯУНДХР ОПНГПЮВМШЛ ДКЪ ОНКЭГНБЮРЕКЪ НАПЮГНЛ. оНБКХЪРЭ МЮ ЩРН ОПЕНАПЮГНБЮМХЕ ЛНФМН ХГЛЕМХБ ГМЮВЕМХЕ БЯРПНЕММНИ ОЕПЕЛЕММНИ CONVFMT, ЙНРНПЮЪ ОН СЛНКВЮМХЧ ХЛЕЕР ГМЮВЕМХЕ "%.6g". пЕГСКЭРЮР ОПЕНАПЮГНБЮМХЪ ВХЯКЮ Б ЯРПНЙС ЩЙБХБЮКЕМРЕМ ХЯОНКЭГНБЮМХЧ ТСМЙЖХХ sprintf c ОЕПЕЛЕММНИ CONVFMT, НОПЕДЕКЪЧЫЕИ ТНПЛЮР ОПЕНАПЮГНБЮМХЪ.

оПХ ОЕПЕБНДЕ ЯРПНЙХ Б ВХЯКН awk ОПНЪБКЪЕР ДНЯРНВМН ХМРЕККЕЙРЮ ДКЪ РНЦН, ВРНАШ ПЮЯОНГМЮРЭ "100", "1e2", "100fix" ЙЮЙ ВХЯКН 100. оПХ ОЕПЕБНДЕ Б ВХЯКНБСЧ ТНПЛС ЯРПНЙ РХОЮ "бЮЯЪ" БНГБПЮЫЮЕРЯЪ МСКЕБНЕ ГМЮВЕМХЕ.

еЯКХ ОН ЙЮЙХЛ-КХАН ОПХВХМЮЛ МЕНАУНДХЛН ТНПЯХПНБЮМН ОЕПЕБЕЯРХ ОЕПЕЛЕММСЧ ХКХ БШПЮФЕМХЕ ХГ ВХЯКНБНИ ТНПЛШ Б ЯРПНЙНБСЧ, ПЕЙНЛЕМДСЕРЯЪ ЙНМЙЮРЕМХПНБЮРЭ ЕЕ Я ОСЯРНИ ЯРПНЙНИ "". еЯКХ МЕНАУНДХЛ ОЕПЕБНД ХГ ЯРПНЙНБНИ Б ВХЯКНБСЧ ТНПЛС, ЛНФМН ОПХАЮБХРЭ 0.

гМЮВЕМХЪ ОЕПЕЛЕММШУ Б awk НОПЕДЕКЪЕРЯЪ МЕ РНКЭЙН ОПХЯБНЕМХЕЛ, НОЕПЮРНПЮЛХ ХМЙПЕЛЕМРЮ Х ДЕЙПЕЛЕМРЮ, МН ЛНЦСР АШРЭ НОПЕДЕКЕМШ Х Б ЙНЛЮМДМНИ ЯРПНЙЕ. оНЯКЕДМЕЕ НЯНАЕММН СДНАМН ОПХ МЮОХЯЮМХХ shell-ОПНЦПЮЛЛ, ЯНДЕПФЮЫХУ НАПЮЫЕМХЪ Й awk. гМЮВЕМХЪ ОЕПЕЛЕММШУ НОЕПЕДЕКЪЧРЯЪ ОПХ ЩРНЛ ХЯОНКЭГСЪ НОЖХЧ -v. НОХЯЮММСЧ МХФЕ.

бШГНБ awk

бШГНБ awk ГЮБХЯХР, ЙНМЕВМН, НР НОЕПЮЖХНММНИ ЯХЯРЕЛШ, НДМЮЙН ОПХМЪРШЛ ЪБКЪЕРЯЪ МЕЙХИ UNIX-ОНДНАМШИ ЯРХКЭ, ОПХ ЙНРНПНЛ ЙНЛЮМДМЮЪ ЯРПНЙЮ БШЦКЪДХР ОПХЛЕПМН ЯКЕДСЧЫХЛ НАПЮГНЛ:
awk [НОЖХХ] ОПНЦПЮЛЛЮ ТЮИК ДЮММШУ
ЦДЕ ОПНЦПЮЛЛЮ ЛНФЕР АШРЭ КХАН МЕОНЯПЕДЯРБЕММН РЕЙЯРНЛ awk-ОПНЦПЮЛЛШ (Б НДХМЮПМШУ ЙЮБШВЙЮУ), КХАН ЯЯШКЙНИ БХДЮ -f file МЮ ТЮИК file, ЯНДЕПФЮЫХИ awk-ОПНЦПЮЛЛС. оЕПБШИ БЮПХЮМР ОПХЛЕМЪЕРЯЪ НАШВМН ДКЪ ЙНПНРЙХУ awk-ОПНЦПЮЛЛ, БРНПНИ -- ДКЪ ЯКНФМШУ awk-РЕЙЯРНБ, АХАКХНРЕЙ ТСМЙЖХИ Х ОП. хЯОНКЭГСЪ НОЖХЧ source, ЛНФМН ЯЛЕЬХБЮРЭ ЩРХ ДБЮ ЯОНЯНАЮ ОПЕДЯРЮБКЕМХЪ awk-ОПНЦПЮЛЛ.

тЮИК ДЮММШИ ОПЕДЯРЮБКЪЕР ЯНАНИ РНР ТЮИК, Й ЙНРНПНЛС ОПХЛЕМЪЕРЯЪ awk-ОПНЦПЮЛЛЮ. еЯКХ РЮЙНИ ТЮИК НРЯСРЯРБСЕР, ОН awk-ОПНЦПЮЛЛЮ ОПХЛЕМЪЕРЯЪ Й ОНРНЙС ЯРЮМДЮПРМНЦН ББНДЮ. щРН ОНГБНКЪЕР ОПХЛЕМЪРЭ awk Б ЙНМБЕИЕПЮУ.

нОХЖХХ ДКЪ awk ГЮДЮЧРЯЪ Б POSIX-ЯРХКЕ АСЙБНИ, ОЕПЕД ЙНРНПНИ ПЮЯОНКЮЦЮЕРЯЪ ГМЮЙ ЛХМСЯ (-). яВЮЯРКХБШЕ ОНКЭГНБЮРЕКХ gawk ЛНЦСР ХЯОНКЭГНБЮРЭ ''ДКХМШЕ'' ХЛЕМЮ ДКЪ НОЖХИ Б GNU-ЯРХКЕ, ОЕПЕД ЙНРНПШЛХ МЕНАУНДХЛН ПЮГЛЕЯРХРЭ ДБЮ ЛХМСЯЮ (-). бШГШБЮЪ gawk, ЛНФМН БОЕПЕЛЕЬЙС ХЯОНКЭГНБЮРЭ ДКХМШЕ Х ЙНПНРЙХЕ ТНПЛШ НОЖХИ.

оПНЦПЮЛЛЮ awk ОНМХЛЮЕР Б НЯМНБМНЛ ЯКЕДСЧЫХЕ НОЖХХ:
\(
\begin{array}{l} \mbox{\tt -F FS}\\ \mbox{\tt --field-separator=FS} \end{array}\) щРЮ НОЖХЪ СЯРЮМЮБКХБЮЕР ПЮГДЕКХРЕКЭ ОНКЕИ Б ГЮОХЯХ ПЮБМШИ FS.
\(
\begin{array}{l} \mbox{\tt -f file}\\ \mbox{\tt --file=file} \end{array}\) СЙЮГШБЮЕР МЮ РН, ВРН awk-ОПНЦПЮЛЛЮ МЮУНДХРЯЪ Б ТЮИКЕ file
\(
\begin{array}{l} \mbox{\tt -v VAR=VAL}\\ \mbox{\tt --assign=VAR=VAL} \end{array}\) ОПХЯБЮХБЮЕР ОЕПЕЛЕММНИ VAR ГМЮВЕМХЕ VAL. оПХЯБНЕМХЕ БШОНКМЪЕРЯЪ ОЕПЕД МЮВЮКНЛ ПЮАНРШ awk-ОПНЦПЮЛЛШ.
\(
\begin{array}{l} \mbox{\tt -W source=file}\\ \mbox{\tt --source file} \end{array}\) рЮЙ ФЕ ЙЮЙ Х f-НОЖХЪ, СЙЮГШБЮЕР МЮ РН, ВРН awk-ОПНЦПЮЛЛЮ ( ХКХ ВЮЯРЭ ЕЕ ) МЮУНДХРЯЪ Б ТЮИКЕ file. оНГБНКЪЕР ХЯОНКЭГНБЮРЭ ЙНЛАХМЮЖХЧ ББНДЮ ОПНЦПЮЛЛШ ВЕПЕГ ЙНЛЮМДМСЧ ЯРПНЙС Х ХГ ГЮПЮМЕЕ ОНДЦНРНБКЕММНЦН ТЮИКЮ.
\(
\begin{array}{l} \mbox{\tt -W version}\\ \mbox{\tt --version} \end{array}\) яННАЫЮЕР БЕПЯХЧ awk(gawk).
-c ГЮЯРЮБКЪЕР ''gawk'' ПЮАНРЮРЭ ЙЮЙ ''awk''.
- НАНГМЮВЮЕР ЙНМЕЖ НОЖХИ. дЮКЕЕ ''-'' МЕ НАНГМЮВЮЕР МЮВЮКН НОЖХХ. щРЮ НОЖХЪ ДЮЕР БНГЛНФМНЯРЭ ПЮАНРЮРЭ Я ТЮИКЮЛХ, ХЛЕМЮ ЙНРНПШУ МЮВХМЮЧРЯЪ МЮ ДЕТХЯ(-).
яМНБЮ НРЛЕРХЛ, ВРН БЮЬ КНЙЮКЭМШИ БЮПХЮМР awk ЛНФЕР ХЛЕРЭ Х ДПСЦНИ МЮАНП НОЖХИ, Я ЙНРНПШЛХ КСВЬЕ НГМЮЙНЛХРЭЯЪ ОН ПСЙНБНДЯРБС. гДЕЯЭ ОПХБЕДЕМШ КХЬЭ МЮХАНКЕЕ СОНРПЕАХРЕКЭМШЕ.

оПНЯРЕИЬХЕ ОНКЕГМШЕ ОПНЦПЮЛЛЙХ

цДЕ ПЮЯРЕР awk?

мЮХАНКЕЕ АКХГЙН awk ЯБЪГЮМ Я НОЕПЮЖХНММНИ ЯХЯРЕЛНИ UNIX Х, ЙЮЙ ОПЮБХКН, БУНДХР БН БЯЕ ЕЕ ОНЯРЮБЙХ. аНКЕЕ РНЦН, НМ ГЮВЮЯРСЧ ХЯОНКЭГСЕРЯЪ Б ХМЯРЮККЪЖХНММШУ ОПНЦПЮЛЛЮУ, РЮЙ ВРН UNIX-ОПНЦПЮЛЛХЯРШ БНЯОПХМХЛЮЧР ЕЦН ЙЮЙ МЕНРЕЛКХЛШИ ЩКЕЛЕМР ЯПЕДШ UNIX.

нЯМНБМШЛ ЛЕЯРНЛ УПЮМЕМХЪ awk ЪБКЪЕРЯЪ ДЕОНГХРЮПХИ GNU-ОПНЦПЮЛЛМНЦН НАЕЯОЕВЕМХЪ http://www.gnu.org, ВЕПЕГ ЙНРНПШИ ЛНФМН БШИРХ МЮ ЛМНЦНВХЯКЕММШЕ ГЕПЙЮКЮ. бЕПЯХЧ ДКЪ DOS/WINDOWS ЛНФМН МЮИРХ МЮ ЯЮИРЕ www.simtel.net Х ЕЦН ГЕПЙЮКЮУ.

сОПЮФМЕМХЪ

щРХ СОПЮФМЕМХЪ ОНГБНКЪР БЮЛ СДНЯРНБЕПХРЭЯЪ Б ЯБНЕЛ ЛЮЯРЕПЯРБЕ awk-ОПНЦПЮЛЛХПНБЮМХЪ.
  1. мЮОХЯЮРЭ ТХКЭРП ДКЪ НАЗЕДХМЕМХЪ ЙЮФДНИ МЕВЕРМНИ ЯРПНЙХ ТЮИКЮ Я ОНЯКЕДСЧЫЕИ (ВЕРМНИ)
  2. мЮОХЯЮРЭ ОПНЦПЮЛЛС, ЙНРНПЮЪ АШ БШБНДХКЮ ЯХЛБНКШ ЯРПНЙХ-ЮПЦСЛЕМРЮ Б НАПЮРМНЛ ОНПЪДЙЕ.
  3. мЮОХЯЮРЭ ОПНЦПЮЛЛС, ЙНРНПЮЪ АШ БШБНДХКЮ АШ МЮ ПСЯЯЙНЛ ЪГШЙЕ ВХЯКЮ ДН ЯНРЕМ ЛХККХНМНБ.
  4. мЮОХЯЮРЭ ОПНЦПЮЛЛС, ЙНРНПЮЪ АШ ПЕЬЮКЮ КХМЕИМШЕ СПЮБМЕМХЪ БХДЮ:

        27*x = 43

Bibliography

1
йЕПМХЦЮМ а.б., оЮИЙ п. UNIX-- СМХБЕПЯЮКЭМЮЪ ЯПЕДЮ ОПНЦПЮЛЛХПНБЮМХЪ: оЕП. Я ЮМЦК.; оПЕДХЯК. л.х. аЕКЪЙНБЮ.-- л.: тХМЮМЯШ Х ЯРЮРХЯРХЙЮ, 1992.-- 304 Я.


Footnotes

...FS) 1
пЮГДЕКХРЕКЕЛ ОНКЕИ FS ОН СЛНКВЮМХЧ ЪБКЪЕРЯЪ ЯХЛБНК ОПНАЕКЮ.


мСПЛХМЯЙХИ еБЦЕМХИ юКЕЙЯЕЕБХВ
2002-03-11

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