пСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ ДКЪ GNU Awk
10. бЯРПНЕММШЕ ОЕПЕЛЕММШЕщТТЕЙРХБМНЕ AWK-ОПНЦПЮЛЛХПНБЮМХЕ
аНКЭЬХМЯРБН awk-ОЕПЕЛЕММШУ ДНЯРСОМШ БЮЛ ДКЪ ХЯОНКЭГНБЮМХЪ Б МСФМШУ БЮЛ ЖЕКЪУ; НМХ ХГЛЕМЪЧРЯЪ РНКЭЙН БЮЬЕИ ОПНЦПЮЛЛНИ Х МХЙНЦДЮ МЕ БКХЪЧР МХ МЮ ВРН ЙПНЛЕ СЯКНБХИ, ОПНБЕПЪЕЛШУ БЮЬЕИ ОПНЦПЮЛЛНИ. мН МЕЯЙНКЭЙН ОЕПЕЛЕММШУ Б awk ХЛЕЧР ЯОЕЖХЮКЭМНЕ МЮГМЮВЕМХЕ. мЕЙНРНПШЕ ХГ МХУ awk ЮБРНЛЮРХВЕЯЙХ ОПНБЕПЪЕР, РЮЙ ВРН НМХ ОНГБНКЪЧР БЮЛ ЯННАЫЮРЭ ХМРЕПОПЕРЮРНПС НОПЕДЕКЕММСЧ ХМТНПЛЮЖХЧ. дПСЦХЕ awk ЮБРНЛЮРХВЕЯЙХ СЯРЮМЮБКХБЮЕР, РЮЙ ВРН НМХ МЕЯСР ХМТНПЛЮЖХЧ НР awk Й БЮЬЕИ ОПНЦПЮЛЛЕ. б ЩРНИ ЦКЮБЕ НОХЯЮМШ БЯЕ БЯРПНЕММШЕ ОЕПЕЛЕММШЕ gawk. аНКЭЬХМЯРБН ХГ МХУ НОХЯШБЮЧРЯЪ РЮЙФЕ Б ЦКЮБЮУ, ЙЮЯЮЧЫХУЯЪ ХУ НАКЮЯРЕИ ЮЙРХБМНЯРХ. 10.1 бЯРПНЕММШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЕ СОПЮБКЪЧР ДЕИЯРБХЪЛХ awkоПХБЕДЕЛ ЮКТЮБХРМШИ ЯОХЯНЙ ОЕПЕЛЕММШУ, ЙНРНПШЕ БШ ЛНФЕРЕ ХГЛЕМЪРЭ ДКЪ ЙНМРПНКЪ ГЮ МЕЙНРНПШЛХ ДЕИЯРБХЪЛХ awk. оЕПЕЛЕММШЕ, ЯОЕЖХТХВМШЕ ДКЪ gawk, ОНЛЕВЕМШ ГБЕГДНВЙЮЛХ `*'. CONVFMTщРЮ ЖЕОНВЙЮ СОПЮБКЪЕР ОПЕБПЮЫЕМХЪЛХ ВХЯЕК Б ЖЕОНВЙХ (ЯЛ. ПЮГДЕК 7.4 [йНМБЕПЯХХ ЖЕОНВЕЙ Х ВХЯЕК], ЯРП. 81). нМЮ ПЮАНРЮЕР Б ЙЮВЕЯРБЕ ОЕПБНЦН ЮПЦСЛЕМРЮ ТСМЙЖХХ sprintf (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ЛЮМХОСКЪЖХИ Я ЖЕОНВЙЮЛХ], ЯРП. 137). еЕ ГМЮВЕМХЕ ОН СЛНКВЮМХЧ ЕЯРЭ "%.6g". CONVFMT АШКЮ ББЕДЕМЮ Б ЯРЮМДЮПРЕ POSIX. FIELDWIDTHS *щРН ПЮГДЕКЕММШИ ОПНАЕКЮЛХ ЯОХЯНЙ ЯРНКАЖНБ, ЙНРНПШИ ЯННАЫЮЕР gawk, ЙЮЙ ПЮЯЫЕОКЪРЭ ББНД Я ТХЙЯХПНБЮММШЛХ ЦПЮМХЖЮЛХ ДКЪ ЙНКНМНЙ. щРН ЩЙЯОЕПХЛЕМРЮКЭМЮЪ БНГЛНФМНЯРЭ. оПХЯБЮХБЮМХЕ Б FIELDWIDTHS НРЛЕМЪЕР ХЯОНКЭГНБЮМХЕ FS ДКЪ ПЮГДЕКЕМХЪ ОНКЕИ. яЛ. ПЮГДЕК 5.6 [вРЕМХЕ ДЮММШУ ТХЙЯХПНБЮММНИ ЬХПХМШ], ЯРП. 49, ЯНДЕПФЮЫХИ ДЕРЮКХ. еЯКХ gawk ПЮАНРЮЕР Б ПЕФХЛЕ ЯНБЛЕЯРХЛНЯРХ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП.161), РН FIELDWIDTHS МЕ НЙЮГШБЮЕР ЯОЕЖХЮКЭМНЦН БКХЪМХЪ Х НОЕПЮЖХХ ОН БШДЕКЕМХЧ ОНКЕИ ОПНХГБНДЪРЯЪ РНКЭЙН МЮ НЯМНБЕ ГМЮВЕМХЪ FS. FSFS ОПЕДЯРЮБКЪЕР БУНДМНИ ПЮГДЕКХРЕКЭ ОНКЕИ (ЯЛ. ПЮГДЕК 5.5 [сЙЮГЮМХЪ РНЦН, ЙЮЙ ПЮГДЕКЪЧРЯЪ ОНКЪ], ЯРП. 44). еЕ ГМЮВЕМХЕ ЕЯРЭ НДМН-ЯХЛБНКЭМЮЪ ЖЕОНВЙЮ ХКХ ЛМНЦН ЯХЛБНКЭМНЕ ПЕЦСКЪПМНЕ БШПЮФЕМХЕ, ЙНРНПНЕ ЯННРБЕРЯРБСЕР ПЮГДЕКХРЕКЪЛ ЛЕФДС ОНКЪЛХ Б БУНДМНИ ГЮОХЯХ. еЯКХ ГМЮВЕМХЕ ЕЯРЭ ОСЯРЮЪ ЯРПНЙЮ (""), РН ЙЮФДШИ ЯХЛБНК Б ГЮОХЯХ ПЮЯЯЛЮРПХБЮЕРЯЪ ЙЮЙ НРДЕКЭМНЕ ОНКЕ. гМЮВЕМХЕ ЕЕ ОН СЛНКВЮМХЧ ЕЯРЭ " ", ЖЕОНВЙЮ ХГ НДМНЦН ОПНАЕКЮ. йЮЙ ЯОЕЖХЮКЭМНЕ ХЯЙКЧВЕМХЕ, ЩРН ГМЮВЕМХЕ ОНДПЮГСЛЕБЮЕР, ВРН БЯЪЙЮЪ ОНЯКЕДНБЮРЕКЭМНЯРЭ ОПНАЕКНБ, ЯХЛБНКНБ РЮАСКЪЖХХ Х/ХКХ newlines ЕЯРЭ НРДЕКЭМШИ ПЮГДЕКХРЕКЭ. нМН РЮЙФЕ ОНАСФДЮЕР ХЦМНПХПНБЮРЭ ОПНАЕКШ, ГМЮЙХ РЮАСКЪЖХХ Х newlines Б МЮВЮКЕ Х ЙНМЖЕ ГЮОХЯХ. гМЮВЕМХЕ FS ЛНФМН СЯРЮМЮБКХБЮРЭ ХГ ЙНЛЮМДМНИ ЯРПНЙХ Я ОНЛНЫЭЧ ОЮПЮЛЕРПЮ `-F': awk -F, 'program' input-filesеЯКХ gawk ХЯОНКЭГСЕР FIELDWIDTHS ДКЪ ПЮГДЕКЕМХЪ ОНКЕИ, РН ОПХЯБЮХБЮМХЕ ГМЮВЕМХЪ ОЕПЕЛЕММНИ FS ГЮЯРЮБХР gawk БНГБПЮРХРЭЯЪ Й МНПЛЮКЭМНЛС, МЮ НЯМНБЕ FS, ПЮГДЕКЕМХЧ ОНКЕИ. оПНЯРНИ ОСРЭ ДКЪ ЩРНЦН ОПНЯРН МЮОХЯЮРЭ `FS = FS', БНГЛНФМН, Я ОНЪЯМХРЕКЭМШЛ ЙНЛЛЕМРЮПХЕЛ. IGNORECASE *еЯКХ ГМЮВЕМХЕ IGNORECASE МЕ МНКЭ Х МЕ ОСЯРН, РН БЯЕ ЯПЮБМЕМХЪ ЖЕОНВЕЙ Х НОПЕДЕКЕМХЪ ЯННРБЕРЯРБХИ ПЕЦСКЪПМШЛ БШПЮФЕМХЪЛ АСДСР МЕГЮБХЯХЛШ НР ПЕЦХЯРПЮ. рЮЙ, Б ЯННРБЕРЯРБХЕ regexp ОН `~' Х `!~', ТСМЙЖХЪ gensub, gsub, index, match, split Х sub, Б НЙНМВЮМХЪУ ГЮОХЯЕИ ОН RS Х ПЮГДЕКЕМХЧ ОНКЕИ ОН FS --- БЯЧДС АСДЕР ХЦМНПХПНБЮРЭЯЪ ПЕЦХЯРП БН БЯЕУ НОЕПЮЖХЪУ. гМЮВЕМХЕ IGNORECASE МЕ БКХЪЕР МЮ ХМДЕЙЯЮЖХЧ Б ЛЮЯЯХБЮУ. яЛ. ПЮГДЕК 4.5 [вСБЯРБХРЕКЭМНЯРЭ Й ПЕЦХЯРПС Б ЯННРБЕРЯРБХЪУ], ЯРП. 33. еЯКХ gawk ПЮАНРЮЕР Б ПЕФХЛЕ ЯНБЛЕЯРХЛНЯРХ, (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП.161), РН IGNORECASE МЕ ХЛЕЕР ЯОЕЖХЮКЭМНЦН ГМЮВЕМХЪ Х ЖЕОНВЙХ Х НОЕПЮЖХХ Я regexp ВСБЯРБХРЕКЭМШ Й ПЕЦХЯРПС. OFMTщРЮ ЖЕОНВЙЮ СОПЮБКЪЕР ОПЕБПЮЫЕМХЪЛХ ВХЯЕК Б ЖЕОНВЙХ (ЯЛ. ПЮГДЕК 7.4 [ЙНМБЕПЯХХ ЖЕОНВЕЙ Х ВХЯЕК], ЯРП. 81) ОПХ ОЕВЮРХ ОН НОЕПЮРНПС print. тЮЙРХВЕЯЙХ НМЮ ПЮАНРЮЕР ЙЮЙ ОЕПБШИ ЮПЦСЛЕМР ТСМЙЖХХ sprintf (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ЛЮМХОСКЪЖХИ Я ЖЕОНВЙЮЛХ], ЯРП. 137). еЕ ГМЮВЕМХЕ ОН СЛНКВЮМХЧ ЕЯРЭ "%.6g". пЮММХЕ БЕПЯХХ awk РЮЙФЕ ХЯОНКЭГНБЮКХ OFMT ДКЪ ЯОЕЖХТХЙЮЖХХ ТНПЛЮРЮ ОПХ ОПЕБПЮЫЕМХХ ВХЯЕК Б ЖЕОНВЙХ Б НАЫХУ БШПЮФЕМХЪУ; РЕОЕПЭ ЩРН ДЕКЮЕРЯЪ ЯНЦКЮЯМН ОЕПЕЛЕММНИ CONVFMT. OFSщРН БШУНДМНИ ПЮГДЕКХРЕКЭ ОНКЕИ (ЯЛ. ПЮГДЕК 6.3 [бШУНДМШЕ ПЮГДЕКХРЕКХ], ЯРП. 63). нМ ПЮГДЕКЪЕР ОНКЪ МЮ БШУНДЕ Б НОЕПЮРНПЕ ОЕВЮРХ. оН СЛНКВЮМХЧ ХЛЕЕР ГМЮВЕМХЕ " ", ЖЕОНВЙЮ ХГ НДМНЦН ОПНАЕКЮ. ORS щРН БШУНДМНИ ПЮГДЕКХРЕКЭ ГЮОХЯЕИ. нМ БШДЮЕРЯЪ Б ЙНМЖЕ ПЕГСКЭРЮРЮ НОЕПЮРНПЮ ОЕВЮРХ. оН СЛНКВЮМХЧ ЕЦН ГМЮВЕМХЕ ЕЯРЭ ""n". (яЛ. ПЮГДЕК 6.3 [бШУНДМНИ ПЮГДЕКХРЕКЭ, ЯРП. 63.) RSщРН БУНДМНИ ПЮГДЕКХРЕКЭ ГЮОХЯЕИ Б awk. оН СЛНКВЮМХЧ ЕЦН ГМЮВЕМХЕ ЕЯРЭ ЖЕОНВЙЮ ХГ НДМНЦН ЯХЛБНКЮ newline. щРН НГМЮВЮЕР, ВРН БУНДМЮЪ ЯРПНЙЮ ЯНЯРНХР ХГ НДМНИ ЯРПНЙХ РЕЙЯРЮ. щРН ЛНФЕР АШРЭ Х ОСЯРЮЪ ЖЕОНВЙЮ, Х Б ЩРНЛ ЯКСВЮЕ ГЮОХЯХ ПЮГДЕКЕМШ ОНКНЯНИ ЯРПНЙ ХГ ОПНАЕКНБ ХКХ regexp, Б ЙНРНПНЛ ГЮОХЯХ ПЮГДЕКЪЧРЯЪ ЯННРБЕРЯРБХЪЛХ ЩРНЛС regexp БН БУНДМНЛ РЕЙЯРЕ. (яЛ. ПЮГДЕК 5.1 [йЮЙ ББНД ДЕКХРЯЪ МЮ ГЮОХЯХ], ЯРП. 37.) SUBSEPSUBSEP ЕЯРЭ ПЮГДЕКХРЕКЭ ХМДЕЙЯНБ. оН СЛНКВЮМХЧ НМ ПЮБЕМ ""034" Х ХЯОНКЭГСЕРЯЪ ДКЪ ПЮГДЕКЕМХЪ ХМДЕЙЯНБ Б ЩКЕЛЕМРЮУ ЛМНЦНЛЕПМНЦН ЛЮЯЯХБЮ. рЮЙ, БШПЮФЕМХЕ foo["A", "B"] ТЮЙРХВЕЯЙХ ЕЯРЭ foo["A"034B"] (ЯЛ. ПЮГДЕК 11.9 [лМНЦНЛЕПМШЕ ЛЮЯЯХБШ], ЯРП. 130). 10.2 бЯРПНЕММШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЕ ОЕПЕДЮЧР ХМТНПЛЮЖХЧоПХБЕДЕЛ ЮКТЮБХРМШИ ЯОХЯНЙ ОЕПЕЛЕММШУ, ЙНРНПШЕ awk СЯРЮМЮБКХБЮЕР ЮБРНЛЮРХВЕЯЙХ Б НОПЕДЕКЕММШУ ЯКСВЮЪУ ДКЪ ОЕПЕДЮВХ ХМТНПЛЮЖХХ БЮЬЕИ ОПНЦПЮЛЛЕ. оЕПЕЛЕММШЕ, ЯОЕЖХТХВМШЕ ДКЪ awk, НРЛЕВЕМШ ГБЕГДНВЙНИ, `*'. ARGC ARGVюПЦСЛЕМРШ ЙНЛЮМДМНИ ЯРПНЙХ, ДНЯРСОМШЕ awk-ОПНЦПЮЛЛЮЛ, УПЮМЪРЯЪ Б ЛЮЯЯХБЕ Я ХЛЕМЕЛ ARGV. ARGC ЕЯРЭ ВХЯКН ОПХЯСРЯРБСЧЫХУ ЮПЦСЛЕМРНБ ЙНЛЮМДМНИ ЯРПНЙХ. яЛ. ПЮГДЕК 14.2 [дПСЦХЕ ЮПЦСЛЕМРШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 165. б НРКХВХЕ НР АНКЭЬХМЯРБЮ ЛЮЯЯХБНБ awk, ARGV ХМДЕЙЯХПСЕРЯЪ НР 0 ДН ARGC \Gamma 1. мЮОПХЛЕП: $ awk 'BEGIN - ? for (i = 0; i ! ARGC; i++) ? print ARGV[i] ? ""'& inventory-shipped BBS-list a awk a inventory-shipped a BBS-list б ЩРНЛ ОПХЛЕПЕ ARGV[0] ЯНДЕПФХР "awk", ARGV[1] ЯНДЕПФХР "inventory-shipped", Ю ARGV[2] ЯНДЕПФХР "BBS-list". гМЮВЕМХЕ ARGC ЕЯРЭ РПХ, МЮ НДХМ АНКЭЬЕ ВЕЛ ХМДЕЙЯ ОНЯКЕДМЕЦН ЩКЕЛЕМРЮ Б ARGV, ОНЯЙНКЭЙС ЩКЕЛЕМРШ МСЛЕПСЧРЯЪ Я МСКЪ. хЛЕМЮ ARGC Х ARGV, РЮЙФЕ ЙЮЙ ЯНЦКЮЬЕМХЕ НА ХМДЕЙЯЮЖХХ ЛЮЯЯХБЮ НР 0 ДН ARGC \Gamma 1, БГЪРШ ХГ ЛЕРНДЮ ЪГШЙЮ CХ ДКЪ ДНЯРСОЮ Й ЩКЕЛЕМРЮЛ ЙНЛЮМДМНИ ЯРПНЙХ. яЛ. ПЮГДЕК 10.3 [хЯОНКЭГНБЮМХЕ ARGC Х ARGV], ЯРП. 120, ДКЪ ЯБЕДЕМХИ Н РНЛ, ЙЮЙ awk ХЯОНКЭГСЕР ЩРХ ОЕПЕЛЕММШЕ. ARGIND *хМДЕЙЯ Б ARGV РЕЙСЫЕЦН НАПЮАЮРШБЮЕЛНЦН ТЮИКЮ. йЮФДШИ ПЮГ, ЙНЦДЮ gawk НРЙПШБЮЕР МНБШИ ТЮИК Я ДЮММШЛХ ДКЪ НАПЮАНРЙХ, НМ СЯРЮМЮБКХБЮЕР ARGIND МЮ ХМДЕЙЯ ХЛЕМХ ЩРНЦН ТЮИКЮ Б ARGV. йНЦДЮ gawk НАПЮАЮРШБЮЕР БУНДМШЕ ТЮИКШ, БШПЮФЕМХЕ `FILENAME == ARGV[ARGIND]' БЯЕЦДЮ ХЛЕЕР ГМЮВЕМХЕ true. щРЮ ОЕПЕЛЕММЮЪ ОНКЕГМЮ ОПХ НАПЮАНРЙЕ ТЮИКНБ; НМЮ ДЮЕР БНГЛНФМНЯРЭ СГМЮРЭ, ЙЮЙ ДЮКЕЙН ОПНЦПЮЛЛЮ ОПНДБХМСКЮЯЭ Б ЯОХЯЙЕ ТЮИКНБ Я ДЮММШЛХ Х ПЮГКХВЮРЭ ОНЯКЕДНБЮРЕКЭМШЕ ОНЪБКЕМХЪ РНЦН ФЕ ХЛЕМХ ТЮИКЮ Б ЙНЛЮМДМНИ ЯРПНЙЕ. оНЯЙНКЭЙС БШ ЛНФЕРЕ ХГЛЕМЪРЭ ГМЮВЕМХЕ ARGIND Б БЮЬЕИ awk-ОПНЦПЮЛЛЕ, gawk АСДЕР ЮБРНЛЮРХВЕЯЙХ СЯРЮМЮБКХБЮРЭ ЕЕ МЮ МНБНЕ ГМЮВЕМХЕ, ЙНЦДЮ НРЙПШБЮЕРЯЪ ЯКЕДСЧЫХИ ТЮИК. щРЮ ОЕПЕЛЕММЮЪ ЪБКЪЕРЯЪ ПЮЯЬХПЕМХЕЛ Б gawk. б ДПСЦХУ ПЕЮКХГЮЖХЪУ awk ХКХ Б gawk Б ПЕФХЛЕ ЯНБЛЕЯРХЛНЯРХ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРП ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161), ЕЕ МЕР. ENVIRONбЯОНЛНЦЮРЕКЭМШИ ЛЮЯЯХБ, ЙНРНПШИ ЯНДЕПФХР ДЮММШЕ НА НЙПСФЕМХХ. еЦН ХМДЕЙЯШ --- ХЛЕМЮ ОЕПЕЛЕММШУ НЙПСФЕМХЪ. гМЮВЕМХЪ ЕЯРЭ ГМЮВЕМХЪ МЕЙНРНПШУ ОЕПЕЛЕММШУ НЙПСФЕМХЪ. мЮОПХЛЕП, ENVIRON["HOME"] ЛНФЕР АШРЭ `/home/arnold'. хГЛЕМЕМХЪ Б ЩРНЛ ЛЮЯЯХБЕ МЕ БКХЪЧР МЮ НЙПСФЕМХЕ, ОЕПЕДЮБЮЕЛНЕ ЙЮЙХЛ-МХАСДЭ ОПНЦПЮЛЛЮЛ, ЙНРНПШЕ awk ЛНФЕР ОНПНДХРЭ ВЕПЕГ ОЕПЕМЮОПЮБКЕМХЕ ХКХ ЯХЯРЕЛМШЛХ ЯПЕДЯРБЮЛХ. (щРН ЛНФЕР АШРЭ Б АСДСЫХУ БЕПЯХЪУ gawk.) мЕЙНРНПШЕ НОЕПЮЖХНММШЕ ЯХЯРЕЛШ ЛНЦСР МЕ ХЛЕРЭ ОЕПЕЛЕММШУ НЙПСФЕМХЪ. мЮ РЮЙХУ ЯХЯРЕЛЮУ ЛЮЯЯХБ ENVIRON ОСЯР (ЙПНЛЕ ENVIRON["AWKPATH"]). ERRNO *еЯКХ ОПНХГНИДЕР ЯХЯРЕЛМШИ ЯАНИ ХКХ ОПХ ОЕПЕМЮОПЮБКЕМХХ ДКЪ getline, БН БПЕЛЪ ВРЕМХЪ ОН getline, ХКХ БН БПЕЛЪ НОЕПЮЖХХ close, РН ERRNO АСДЕР ЯНДЕПФЮРЭ ЖЕОНВЙС Я НОХЯЮМХЕЛ НЬХАЙХ. щРЮ ОЕПЕЛЕММЮЪ ОПЕДЯРЮБКЪЕР ПЮЯЬХПЕМХЕ gawk. б ДПСЦХУ ПЕЮКХГЮЖХЪУ awk Х Б gawk Б ПЕФХЛЕ ЯНБЛЕЯРХЛНЯРХ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161) НМЮ НРЯСРЯРБСЕР. FILENAMEщРН ХЛЪ ТЮИКЮ, ЙНРНПШИ awk ВХРЮЕР Б МЮЯРНЪЫЕЕ БПЕЛЪ. еЯКХ МХЙЮЙХЕ ТЮИКШ Я ДЮММШЛХ МЕ СЙЮГЮМШ Б ЙНЛЮМДМНИ ЯРПНЙЕ, awk ВХРЮЕР ХГ ЯРЮМДЮПРМНЦН ББНДЮ Х FILENAME ЯНДЕПФХР "-". FILENAME ХГЛЕМЪЕРЯЪ ЙЮФДШИ ПЮГ, ЙНЦДЮ ВХРЮЕРЯЪ МНБШИ ТЮИК (ЯЛ. ЦКЮБС 5 [вРЕМХЕ БУНДМШУ ТЮИКНБ], ЯРП. 37). бМСРПХ ОПЮБХКЮ BEGIN ГМЮВЕМХЕ FILENAME ЕЯРЭ "", ОНЯЙНКЭЙС Б ЩРН БПЕЛЪ ЕЫЕ МЕР НАПЮАЮРШБЮЕЛШУ БУНДМШУ ТЮИКНБ (d.c.). FNRFNR ЕЯРЭ МНЛЕП РЕЙСЫЕИ ГЮОХЯХ Б РЕЙСЫЕЛ ТЮИКЕ. FNR СБЕКХВХБЮЕРЯЪ ЙЮФДШИ ПЮГ, ЙНЦДЮ ВХРЮЕРЯЪ МНБЮЪ ГЮОХЯЭ (ЯЛ. ПЮГДЕК 5.8 [ъБМШИ ББНД ОН getline], ЯРП. 53). нМЮ ХМХЖХЮКХГХПСЕРЯЪ МСКЕЛ ЙЮФДШИ ПЮГ, ЙНЦДЮ МЮВХМЮЕРЯЪ МНБШИ БУНДМНИ ТЮИК. мЕЙНРНПШЕ ПЮММХЕ ПЕЮКХГЮЖХХ Unix awk ХМХЖХЮКХГХПНБЮКХ FILENAME ГМЮВЕМХЕЛ "-", ДЮФЕ ЕЯКХ ХЛЕЧРЯЪ ТЮИКШ Я ДЮММШЛХ ДКЪ НАПЮАНРЙХ. рЮЙНЕ ОНБЕДЕМХЕ АШКН МЕБЕПМШЛ, Х МЕ МЮДН МН МЕЦН ОНКЮЦЮРЭЯЪ Б БЮЬХУ ОПНЦПЮЛЛЮУ. NFNF ЯНДЕПФХР ЙНКХВЕЯРБН ОНКЕИ Б РЕЙСЫЕИ БУНДМНИ ГЮОХЯХ. NF СЯРЮМЮБКХБЮЕРЯЪ ЙЮФДШИ ПЮГ, ЙНЦДЮ ВХРЮЕРЯЪ МНБЮЪ ГЮОХЯЭ, ЙНЦДЮ ЯНГДЮЕРЯЪ МНБНЕ ОНКЕ ХКХ ЙНЦДЮ ЛЕМЪЕРЯЪ $0 (ЯЛ. ПЮГДЕК 5.2 [хЯЯКЕДНБЮМХЕ ОНКЕИ], ЯРП. 40). NRщРН ЙНКХВЕЯРБН БУНДМШУ ГЮОХЯЕИ, ЙНРНПШЕ awk НАПЮАНРЮКЮ Я МЮВЮКЮ БШОНКМЕМХЪ ОПНЦПЮЛЛШ (ЯЛ. ПЮГДЕК 5.1 [йЮЙ ББНД ПЮГДЕКЪЕРЯЪ МЮ ГЮОХЯХ], ЯРП. 37). NR ХГЛЕМЪЕРЯЪ ЙЮФДШИ ПЮГ, ЙНЦДЮ ВХРЮЕРЯЪ МНБЮЪ ГЮОХЯЭ. RLENGTHRLENGTH ЕЯРЭ ДКХМЮ ОНДЖЕОНВЙХ, БШДЕКЕММНИ ТСМЙЖХЕИ ЯННРБЕРЯРБХЪ (match function) (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ДЕИЯРБХИ МЮД ЖЕОНВЙЮЛХ], ЯРП. 137). RLENGTH СЯРЮМЮБКХБЮЕРЯЪ ОПХ БШГНБЕ ТСМЙЖХХ ЯННРБЕРЯРБХЪ. еЕ ГМЮВЕМХЕ ЕЯРЭ ДКХМЮ БШДЕКЕММНИ ЖЕОНВЙХ ХКХ \Gamma 1, ЕЯКХ ЯННРБЕРЯРБХЪ МЕ НАМЮПСФЕМН. RSTARTRSTART ЕЯРЭ МЮВЮКЭМШИ ХМДЕЙЯ Б ЯХЛБНКЮУ ОНДЖЕОНВЙХ, МЮИДЕММНИ ТСМЙЖХЕИ ЯННРБЕРЯРБХЪ (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ НОЕПЮЖХИ МЮД ЖЕОНВЙЮЛХ], ЯРП. 137). RSTART СЯРЮМЮБКХБЮЕРЯЪ ОПХ БШГНБЕ ТСМЙЖХХ ЯННРБЕРЯРБХЪ. еЕ ГМЮВЕМХЕ ЕЯРЭ ОНГХЖХЪ ЖЕОНВЙХ, Я ЙНРНПНИ МЮВХМЮЕРЯЪ БШДЕКЕММЮЪ ОНДЖЕОНВЙЮ, ХКХ 0, ЕЯКХ ЯННРБЕРЯРБХЪ МЕР. RT *RT СЯРЮМЮБКХБЮЕРЯЪ ЙЮФДШИ ПЮГ, ЙНЦДЮ ВХРЮЕРЯЪ ГЮОХЯЭ. нМЮ ЯНДЕПФХР БУНДМНИ РЕЙЯР, ЙНРНПШИ НОПЕДЕКЕМ Б RS, ПЮГДЕКХРЕКЭ ГЮОХЯЕИ. оЕПЕЛЕММЮЪ ЕЯРЭ ПЮЯЬХПЕМХЕ gawk. б ДПСЦХУ ПЕЮКХГЮЖХЪУ awk ХКХ Б gawk Б ПЕФХЛЕ ЯНБЛЕЯРХЛНЯРХ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161), НМЮ МЕ ДЕИЯРБСЕР. гюлевюмхе Н NR Х FNR.awk ОПНЯРН СБЕКХВХБЮЕР НАЕ ЩРХ ОЕПЕЛЕММШЕ ЙЮФДШИ ПЮГ ОПХ ВРЕМХХ ГЮОХЯХ, БЛЕЯРН ОПХЯБЮХБЮМХЪ ХЛ ЮАЯНКЧРМНЦН ГМЮВЕМХЪ ЙНКХВЕЯРБЮ ОПНВРЕММШУ ГЮОХЯЕИ. щРН ГМЮВХР, ВРН БЮЬЮ ОПНЦПЮЛЛЮ ЛНФЕР ХГЛЕМЪРЭ ЩРХ ОЕПЕЛЕММШЕ, Х ХУ МНБШЕ ГМЮВЕМХЪ АСДСР СБЕКХВХБЮРЭЯЪ ОПХ ВРЕМХХ ДЮКЭМЕИЬХУ ГЮОХЯЕИ (d.c.). мЮОПХЛЕП: $ echo '1 ? 2 ? 3 ? 4' -- awk 'NR == 2 - NR = 17 "" ? - print NR ""' a 1 a 17 a 18 a 19 дН РНЦН, ЙЮЙ FNR АШКЮ ДНАЮБКЕМЮ Й ЪГШЙС awk (ЯЛ. ПЮГДЕК 17.1 [цКЮБМШЕ ХГЛЕМЕМХЪ ЛЕФДС V7 Х SVR3.1], ЯРП. 253), ЛМНЦХЕ awk-ОПНЦПЮЛШ ХЯОНКЭГНБЮКХ ЩРН ЯБНИЯРБН ДКЪ НОПЕДЕКЕМХЪ ЙНКХВЕЯРБЮ ГЮОХЯЕИ Б ТЮИКЕ, СЯРЮМЮБКХБЮЪ NR МЮ 0 ОПХ ХГЛЕМЕМХХ FILENAME. 10.3 хЯОНКЭГНБЮМХЕ ARGC Х ARGVб ПЮГДЕКЕ 10.2 [бЯРПНЕММШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЕ ОЕПЕДЮЧР ХМТНПЛЮЖХЧ], ЯРП. 117, ЛШ БХДЕКХ ЩРС ОПНЦПЮЛЛС, НОХЯШБЮЧЫСЧ ХМТНПЛЮЖХЧ, ЯНДЕПФЮЫСЧЯЪ Б ARGC Х ARGV: $ awk 'BEGIN - ? for (i = 0; i ! ARGC; i++) ? print ARGV[i] ? ""'& inventory-shipped BBS-list a awk a inventory-shipped a BBS-list б ЩРНЛ ОПХЛЕПЕ ARGV[0] ЯНДЕПФХР "awk", ARGV[1] ЯНДЕПФХР "inventoryshipped", Х ARGV[2] ЯНДЕПФХР "BBS-list". гЮЛЕРХЛ, ВРН awk-ОПНЦПЮЛЛЮ МЕ БУНДХР Б ARGV. дПСЦХЕ ЯОЕЖХЮКЭМШЕ НОЖХХ ЙНЛЮМДМНИ ЯРПНЙХ, БЛЕЯРЕ Я ХУ ЮПЦСЛЕМРЮЛХ, РЮЙФЕ МЕ БУНДЪР. щРН БЙКЧВЮЕР ОПХЯБЮХБЮМХЪ ОЕПЕЛЕММШЛ, ЯДЕКЮММШЛ Я ОЮПЮЛЕРПНЛ `-v' (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161). мНПЛЮКЭМН ОПХЯБЮХБЮМХЪ ОЕПЕЛЕММШЛ ХГ ЙНЛЮМДМНИ ЯРПНЙХ ПЮЯЯЛЮРПХБЮЧРЯЪ ЙЮЙ ЮПЦСЛЕМРШ Х ОНЙЮГШБЮЧРЯЪ Б ЛЮЯЯХБЕ ARGV. $ cat showargs.awk a BEGIN - a printf "A=%d, B=%d"n", A, B a for (i = 0; i ! ARGC; i++) a printf ""tARGV[%d] = %s"n", i, ARGV[i] a "" a END - printf "A=%d, B=%d"n", A, B "" $ awk -v A=1 -f showargs.awk B=2 /dev/null a A=1, B=0 a ARGV[0] = awk a ARGV[1] = B=2 a ARGV[2] = /dev/null a A=1, B=2 бЮЬЮ ОПНЦПЮЛЛЮ ЛНФЕР ХГЛЕМХРЭ ARGC Х ЩКЕЛЕМРШ ARGV. йЮФДШИ ПЮГ, ЙНЦДЮ awk ДНЯРХЦЮЕР ЙНМЕЖ БУНДМНЦН ТЮИКЮ, НМЮ ХЯОНКЭГСЕР ЯКЕДСЧЫХИ ЩКЕЛЕМР ARGV ЙЮЙ ХЛЪ ЯКЕДСЧЫЕЦН БУНДМНЦН ТЮИКЮ. оНЛЕЫЮЪ РСДЮ ПЮГМШЕ ЖЕОНВЙХ, БЮЬЮ ОПНЦПЮЛЛЮ ЛНФЕР БЛЕЬЮРЭЯЪ Б ВРЕМХЕ ТЮИКНБ. бШ ЛНФЕРЕ ХЯОНКЭГНБЮРЭ "-" ДКЪ ОПЕДЯРЮБКЕМХЪ ЯРЮМДЮПРМНЦН ББНДЮ. гЮОНЛХМЮЪ ДНОНКМХРЕКЭМШЕ ЩКЕЛЕМРШ Х ОПНДБХЦЮЪ ARGC, ЛНФМН ГЮЯРЮБХРЭ ЕЕ ВХРЮРЭ ДНОНКМХРЕКЭМШЕ ТЮИКШ. еЯКХ СЛЕМЭЬЮРЭ ГМЮВЕМХЕ ARGC, РН АСДСР ХЯЙКЧВЕМШ БУНДМШЕ ТЮИКШ ХГ ЙНМЖЮ ЯОХЯЙЮ. гЮОНЛХМЮЪ ЦДЕ-МХАСДЭ ЯРЮПШЕ ГМЮВЕМХЪ ARGC, БЮЬЮ ОПНЦПЮЛЛЮ ЛНФЕР РПЮЙРНБЮРЭ ХЯЙКЧВЕММШЕ ЮПЦСЛЕМРШ ЙЮЙ МЕВРН ХМНЕ, ВЕЛ ХЛЕМЮ ТЮИКНБ. вРНАШ ХЯЙКЧВХРЭ ТЮИК ХГ ЯЕПЕДХМШ ЯОХЯЙЮ, ГЮОХЬХРЕ ОСЯРСЧ ЖЕОНВЙС ("") Б ARGV МЮ ЛЕЯРН ХЛЕМХ ТЮИКЮ. хЦМНПХПНБЮРЭ ХЛЕМЮ ТЮИКНБ, ГЮЛЕМЕММШУ ОСЯРНИ ЖЕОНВЙНИ, ЕЯРЭ ЯОЕЖХЮКЭМЮЪ НЯНАЕММНЯРЭ awk. лНФМН РЮЙФЕ ХЯОНКЭГНБЮРЭ НОЕПЮРНП delete ДКЪ СДЮКЕМХЪ ЩКЕЛЕМРНБ ХГ ARGV (ЯЛ. ПЮГДЕК 11.6 [нОЕПЮРНП delete], ЯРП. 128). бЯЕ ЩРХ ДЕИЯРБХЪ НАШВМН ОПНХГБНДЪРЯЪ ХГ ОПЮБХКЮ BEGIN, ДН ТЮЙРХВЕЯЙНЦН МЮВЮКЮ НАПЮАНРЙХ ББНДЮ. яЛ. ПЮГДЕК 16.1.4 [пЮГДЕКЕМХЕ АНКЭЬНЦН ТЮИКЮ МЮ ВЮЯРХ], ЯРП. 217, Х ПЮГДЕК 16.1.5 [дСОКХЖХПНБЮМХЕ ПЕГСКЭРЮРЮ Б МЕЯЙНКЭЙХУ ТЮИКЮУ], ЯРП. 219, ЙЮЙ ОПХЛЕП ПЮГМШУ ОСРЕИ СДЮКЕМХЪ ЩКЕЛЕМРНБ ХГ ARGV. яКЕДСЧЫХИ ТПЮЦЛЕМР НАПЮАЮРШБЮЕР ARGV, ВРНАШ ХЯЯКЕДНБЮРЭ, Ю ГЮРЕЛ СДЮКХРЭ ОЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ. BEGIN - for (i = 1; i ! ARGC; i++) - if (ARGV[i] == "-v") verbose = 1 else if (ARGV[i] == "-d") debug = 1 else if (ARGV[i] ~ /^-?/) - e = sprintf("%s: unrecognized option -- %c", ARGV[0], substr(ARGV[i], 1, ,1)) print e ? "/dev/stderr" "" else break delete ARGV[i] "" "" вРНАШ ТЮЙРХВЕЯЙХ ОЕПЕМЕЯРХ ОЮПЮЛЕРПШ Б awk-ОПНЦПЮЛЛС, МСФМН ГЮЙНМВХРЭ awk-ОЮПЮЛЕРПШ ЯХЛБНКЮЛХ `--' Х ГЮРЕЛ ББЕЯРХ БЮЬХ ОЮПЮЛЕРПШ, ОНДНАМН ЯКЕДСЧЫЕЛС: awk -f myprog -- -v -d file1 file2 ...щРН МЕ МЕНАУНДХЛН : ОНЙЮ МЕ СЙЮГЮМН `--posix', gawk ОН СЛНКВЮМХЧ ЙКЮДЕР БЯЪЙХИ МЕНОНГМЮММШИ ОЮПЮЛЕРП Б ARGV ДКЪ ХЯОНКЭГНБЮМХЪ awk-ОПНЦПЮЛЛНИ. йЮЙ РНКЭЙН НМ СБХДХР МЕГМЮЙНЛШИ ОЮПЮЛЕРП, gawk ОЕПЕЯРЮЕР ХЯЙЮРЭ ДПСЦХЕ ОЮПЮЛЕРПШ, ЙНРНПШЕ НМ ХМЮВЕ ЛНЦ АШ ПЮЯОНГМЮРЭ. оПЕДШДСЫХИ ОПХЛЕП Я gawk АШК АШ РЮЙХЛ: gawk -f myprog -d -v file1 file2 ...оНЯЙНКЭЙС `-d' МЕ ЕЯРЭ ОПЮБХКЭМШИ ОЮПЮЛЕРП gawk, ОНЯКЕДСЧЫЕЕ `-v' ОЕПЕДЮЕРЯЪ awk-ОПНЦПЮЛЛЕ. |
<<< | нЦКЮБКЕМХЕ | яРПЮМХЖШ: 10 11 | >>> |