пСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ ДКЪ GNU Awk
5. вРЕМХЕ БУНДМШУ ТЮИКНБнЦКЮБКЕМХЕ
5.6 вРЕМХЕ ДЮММШУ ТХЙЯХПНБЮММНИ ЬХПХМШ(б ЩРНЛ ПЮГДЕКЕ НАЯСФДЮЕРЯЪ МНБЮЪ, ЩЙЯОЕПХЛЕМРЮКЭМЮЪ БНГЛНФМНЯРЭ. еЯКХ БШ ЕЫЕ МЕНОШРМШИ ОНКЭГНБЮРЕКЭ awk, ЛНФЕРЕ ОПНОСЯРХРЭ ЩРН ОПХ ОЕПБНЛ ВРЕМХХ.) б БЕПЯХХ gawk 2.13 ББЕДЕМН МНБНЕ ЯПЕДЯРБН ДКЪ ДЕИЯРБХИ Я ОНКЪЛХ ТХЙЯХПНБЮММНИ ЬХПХМШ АЕГ ПЮЯОНГМЮБЮМХЪ ПЮГДЕКХРЕКЕИ ОНКЕИ. дЮММШЕ ЩРНИ ОПХПНДШ ОНЪБКЪЧРЯЪ, МЮОПХЛЕП, МЮ БУНДЕ ЯРЮПШУ FORTRAN-ОПНЦПЮЛЛ, ЦДЕ ВХЯКЮ ОПХЛШЙЮЧР ДПСЦ Й ДПСЦС; ХКХ МЮ БШУНДЕ ОПНЦПЮЛЛ, ЙНРНПШЕ МЕ ОПЕДСЯЛЮРПХБЮЧР ХУ ХЯОНКЭГНБЮМХЪ Б ЙЮВЕЯРБЕ БУНДЮ ДПСЦХУ ОПНЦПЮЛЛ. оПХЛЕПНЛ ОНЯКЕДМХУ ЛНФЕР ЯКСФХРЭ РЮАКХЖЮ, ЦДЕ БЯЕ ЯРНКАЖШ БШОПЪЛКЕММШЛ ХЯОНКЭГНБЮМХЕЛ ОЕПЕЛЕММНЦН ВХЯКЮ ОПНАЕКНБ Х ОСЯРШЕ ОНКЪ ГЮОНКМЕМШ ОПНАЕКЮЛХ. ъЯМН, ВРН ОПХМЪРНЕ Б awk МНПЛЮКЭМНЕ ПЮГДЕКЕМХЕ ОНКЕИ Я ОНЛНЫЭЧ FS МЕСДНАМН Б ЩРНЛ ЯКСВЮЕ. уНРЪ ОЕПЕМНЯХЛШЕ awk-ОПНЦПЮЛЛШ ЛНЦСР ХЯОНКЭГНБЮРЭ ОНЯКЕДНБЮРЕКЭМНЯРЭ БШГНБНБ substr ДКЪ $0 (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ДЕИЯРБХИ ЯН ЯРПНЙЮЛХ], ЯРП. 137), ЩРН ЦПНЛНГДЙН Х МЕЩТТЕЙРХБМН ОПХ АНКЭЬНЛ ВХЯКЕ ОНКЕИ. пЮГДЕКЕМХЕ БУНДМНИ ЯРПНЙХ МЮ ОНКЪ ТХЙЯХПНБЮММНИ ЬХПХМШ СЙЮГШБЮЕРЯЪ ОНЯПЕДЯРБНЛ ОПХЯБЮХБЮМХЪ ЖЕОНВЙХ, ЯНДЕПФЮЫЕИ ПЮГДЕКЕММШЕ ОПНАЕКЮЛХ ВХЯКЮ, БЯРПНЕММНИ ОЕПЕЛЕММНИ FIELDWIDTHS. йЮФДНЕ ВХЯКН СЙЮГШБЮЕР ЬХПХМС ОНКЪ, БЙКЧВЮЪ ЯРНКАЖШ ЛЕФДС ОНКЪЛХ. еЯКХ МСФМН ХЦМНПХПНБЮРЭ ЙНКНМЙХ ЛЕФДС ОНКЪЛХ, ЛНФМН СЙЮГШБЮРЭ ЬХПХМС ЙЮЙ НРДЕКЭМНЕ ОНКЕ, ЙНРНПНЕ БОНЯКЕДЯРБХХ ХЦМНПХПСЕРЯЪ. яКЕДСЧЫХЕ ДЮММШЕ ОПЕДЯРЮБКЪЧР БШУНД СРХКХРШ Unix w. нМХ ОНКЕГМШ ДКЪ ХККЧЯРПЮЖХХ ХЯОНКЭГНБЮМХЪ FIELDWIDTHS. 10:06pm up 21 days, 14:04, 23 users User tty login idle JCPU PCPU what hzuottyV0 8:58pm 9 5 vi p24.tex hzang ttyV3 6:37pm 50 -csh eklye ttyV5 9:53pm 7 1 em thes.tex dportein ttyV6 8:17pm 1:47 -csh gierd ttyD3 10:00pm 1 elm dave ttyD4 9:47pm 4 4 w brent ttyp0 26Jun91 4:46 26:46 4:41 bash dave ttyq4 26Jun9115days 46 46 wnewmail яКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ВХРЮЕР ОПХБЕДЕММШИ БШЬЕ БШУНД, ОЕПЕБНДХР БПЕЛЪ ОПНЯРНЪ (idle time) Б ЯЕЙСМДШ Х ОЕВЮРЮЕР ОЕПБШЕ ДБЮ ОНКЪ Х БШВХЯКЕММНЕ БПЕЛЪ ОПНЯРНЪ. (щРН ОПНЦПЮЛЛЮ ХЯОНКЭГСЕР МЕЯЙНКЭЙН ЯПЕДЯРБ awk, ЙНРНПШЕ ЕЫЕ МЕ ПЮЯЯЛЮРПХБЮКХЯЭ.) BEGIN - FIELDWIDTHS = "9 6 10 6 7 7 35" "" NR ? 2 - idle = $4 sub(/^ */, "", idle) # strip leading spaces if (idle == "") idle = 0 if (idle ~ /:/) - split(idle, t, ":") idle = t[1] * 60 + t[2] "" if (idle ~ /days/) idle *= 24 * 60 * 60 print $1, $2, idle "" гДЕЯЭ ОПХБЕДЕМ ПЕГСКЭРЮР БШОНКМЕМХЪ ОПНЦПЮЛЛШ program МЮ ДЮММШУ: hzuo ttyV0 0 hzang ttyV3 50 eklye ttyV5 0 dportein ttyV6 107 gierd ttyD3 1 dave ttyD4 0 brent ttyp0 286 dave ttyq4 1296000 дПСЦНИ (БНГЛНФМН, АНКЕЕ ОПЮЙРХВМШИ) ОПХЛЕП БУНДМШУ ДЮММШУ ТХЙЯХПНБЮММНИ ЬХПХМШ ОПЕДЯРЮБКЪЕР ББНД ЙНКНДШ БШАНПМШУ ЙЮПРНВЕЙ. б МЕЙНРНПШУ ПЕЦХНМЮУ яью ХГАХПЮРЕКХ ОНЙЮГШБЮЧР ЯБНИ БШАНП НРБЕПЯРХЪЛХ Б ОЕПТНЙЮПРЮУ. гЮРЕЛ ЩРХ ЙЮПРНВЙХ НАПЮАЮРШБЮЧРЯЪ ДКЪ ОНДЯВЕРЮ ЦНКНЯНБ Б ОНКЭГС ЙЮФДНЦН ЙЮМДХДЮРЮ ХКХ ЙЮЙНЦН-МХАСДЭ НОПЕДЕКЕММНЦН ОПЕДОНВРЕМХЪ. оНЯЙНКЭЙС ЦНКНЯСЧЫХИ ЛНФЕР МЕ ЦНКНЯНБЮРЭ ОН МЕЙНРНПНИ ЮКЭРЕПМЮРХБЕ, КЧАЮЪ ЙНКНМЙЮ ЙЮПРШ ЛНФЕР АШРЭ ОСЯРНИ. awk-ОПНЦПЮЛЛЮ ДКЪ НАПЮАНРЙХ РЮЙХУ ДЮММШУ ЛНФЕР ХЯОНКЭГНБЮРЭ ЯПЕДЯРБН FIELDWIDTHS ДКЪ СОПНЫЕМХЪ ВРЕМХЪ ДЮММШУ. (йНМЕВМН, ОНКСВХРЭ gawk, ЙНРНПЮЪ ПЮАНРЮЕР МЮ ЯХЯРЕЛЕ Я ВРЕМХЕЛ ОЕПТНЙЮПР, ЯНЯРЮБКЪЕР НРДЕКЭМСЧ ГЮДЮВС!) оПХЯБЮХБЮМХЕ МЕЙНРНПНЦН ГМЮВЕМХЪ FS ОНАСФДЮЕР gawk БЕПМСРЭЯЪ Й ХЯОНКЭГНБЮМХЧ FS ДКЪ ПЮГДЕКЕМХЪ ОНКЕИ. хЯОНКЭГСИРЕ `FS = FS' ДКЪ ЩРНЦН, МЕ ГМЮЪ РЕЙСЫЕЦН ГМЮВЕМХЪ FS. нАЯСФДЮЕЛНЕ ЯПЕДЯРБН ЕЫЕ ЩЙЯОЕПХЛЕМРЮКЭМН Х ЛНФЕР АШРЭ ОЕПЕПЮАНРЮМН ЯН БПЕЛЕМЕЛ. гЮЛЕРХЛ Б ВЮЯРМНЯРХ, ВРН gawk МЕ ОШРЮЕРЯЪ ОПНБЕПХРЭ ОПЮБХКЭМНЯРЭ ГМЮВЕМХИ, ЯНЯРЮБКЪЧЫХУ ГМЮВЕМХЕ FIELDWIDTHS. 5.7 лМНЦНЯРПНВМШЕ ГЮОХЯХб МЕЙНРНПШУ АЮГЮУ ДЮММШУ НДМЮ ЯРПНЙЮ МЕ ЛНФЕР СДНАМН ЯНДЕПФЮРЭ ХМТНПЛЮЖХЧ НДМНИ ГЮОХЯХ. б РЮЙХУ ЯКСВЮЪУ ЛНФМН ХЯОНКЭГНБЮРЭ ЛМНЦНЯРПНВМШЕ ГЮОХЯХ. оЕПБШЛ ЬЮЦНЛ МЮ ЩРНЛ ОСРХ ДНКФЕМ АШРЭ БШАНП ТНПЛЮРЮ ДЮММШУ: ЕЯКХ ГЮОХЯХ МЕ НОПЕДЕКЕМШ ЙЮЙ НРДЕКЭМШЕ ЯРПНЙХ, ЙЮЙ ХУ НОПЕДЕКЪРЭ? вРН ДНКФМН ХУ ПЮГДЕКЪРЭ? нДМЮ ХГ БНГЛНФМНЯРЕИ ЯНЯРНХР Б БШАНПЕ НЯНАНЦН ЯХЛБНКЮ ХКХ ЯРПНЙХ ДКЪ ХУ ПЮГДЕКЕМХЪ. мЮОПХЛЕП, ЛНФМН ХЯОНКЭГНБЮРЭ ОПНЦНМ ЯРПЮМХЖШ (ГЮОХЯШБЮЕЛШИ ЙЮЙ `"f' Б awk, ЮМЮКНЦХВМН РНЛС ЙЮЙ Б яХ), ПЮЯЯЛЮРПХБЮЪ ЙЮФДСЧ ГЮОХЯЭ ЙЮЙ ЯРПЮМХЖС Б ТЮИКЕ. вРНАШ ЯДЕКЮРЭ ЩРН, ОПХЯБНИРЕ ОЕПЕЛЕММНИ RS ГМЮВЕМХЕ ""f" (ЖЕОНВЙЮ, ЯНДЕПФЮЫЮЪ ЯХЛБНК ЙНМЖЮ ЯРПЮМХЖШ). лНФЕР РЮЙФЕ ХЯОНКЭГНБЮРЭЯЪ КЧАНИ ДПСЦНИ ЯХЛБНК, МЕ ЪБКЪЧЫХИЯЪ ВЮЯРЭЧ ДЮММШУ Б ГЮОХЯХ. дПСЦЮЪ РЕУМХЙЮ ЯНЯРНХР Б ХЯОНКЭГНБЮМХХ ОСЯРШУ ЯРПНЙ ДКЪ ПЮГДЕКЕМХЪ ГЮОХЯЕИ. оН ЯОЕЖХЮКЭМНЛС ЯНЦКЮЬЕМХЧ ОСЯРЮЪ ЖЕОНВЙЮ ЙЮЙ ГМЮВЕМХЕ RS ЛНФЕР СЙЮГШБЮРЭ, ВРН ГЮОХЯХ ПЮГДЕКЪЧРЯЪ НДМНИ ХКХ АНКЕЕ ОСЯРШЛХ ЯРПНЙЮЛХ. еЯКХ СЯРЮМНБХРЭ RS МЮ ОСЯРСЧ ЖЕОНВЙС, ГЮОХЯЭ БЯЕЦДЮ НЙЮМВХБЮЕРЯЪ МЮ ОЕПБНИ ОПНВРЕММНИ ОСЯРНИ ЯРПНЙЕ. х ЯКЕДСЧЫЮЪ ГЮОХЯЭ МЕ МЮВХМЮЕРЯЪ, ОНЙЮ МЕ ОНЪБХРЯЪ ОЕПБЮЪ МЕОСЯРЮЪ ЯРПНЙЮ, ЯКЕДСЧЫЮЪ ГЮ КЧАШЛ ЙНКХВЕЯРБНЛ ОСЯРШУ ЯРПНЙ, ПЮЯЯЛЮРПХБЮЕЛШУ ЙЮЙ ПЮГДЕКХРЕКЭ ГЮОХЯЕИ. рНЦН ФЕ ЯЮЛНЦН ЩТТЕЙРЮ, ЙЮЙ НР `RS = ""', ЛНФМН ДНЯРХВЭ, ОПХЯБЮХБЮЪ RS ЖЕОНВЙХ ""n"n+". щРН regexp ЯННРБЕРЯРБСЕР newline Б ЙНМЖЕ ГЮОХЯХ Х НДМНИ ХКХ АНКЕЕ ОСЯРШУ ЯРПНЙ ОНЯКЕ ГЮОХЯХ. йПНЛЕ РНЦН, БЯЪЙНЕ ПЕЦСКЪПМНЕ БШПЮФЕМХЕ БЯЕЦДЮ ЯННРБЕРЯРБСЕР МЮХАНКЕЕ ДКХММНИ БНГЛНФМНИ ОНЯКЕДНБЮРЕКЭМНЯРХ, ЙНЦДЮ ХЛЕЕРЯЪ БНГЛНФМНЯРЭ БШАНПЮ (ЯЛ. ПЮГДЕК 4.6 [йЮЙЮЪ ОНПЖХЪ РЕЙЯРЮ ЯННРБЕРЯРБСЕР?], ЯРП. 34). рЮЙ ВРН ЯКЕДСЧЫЮЪ ГЮОХЯЭ МЕ МЮВХМЮЕРЯЪ, ОНЙЮ МЕ АСДЕР ДНЯРХЦМСРЮ ОЕПБЮЪ МЕОСЯРЮЪ ЯРПНЙЮ, ОЕПЕД ЙНРНПНИ АШКН ЯЙНКЭЙН СЦНДМН ОСЯРШУ ЯРПНЙ ОНДПЪД, ПЮЯЯЛЮРПХБЮЕЛШУ ЙЮЙ НДХМ ПЮГДЕКХРЕКЭ ГЮОХЯЕИ. хЛЕЕРЯЪ БЮФМНЕ ПЮГКХВХЕ ЛЕФДС `RS = ""' Х `RS = ""n"n+"'. б ОЕПБНЛ ЯКСВЮЕ БЕДСЫХЕ ЯХЛБНКШ newline БН БУНДМНЛ ТЮИКЕ ДЮММШУ ХЦМНПХПСЧРЯЪ, Х ЕЯКХ ТЮИК НЙЮМВХБЮЕРЯЪ АЕГ ДНОНКМХРЕКЭМШУ ОСЯРШУ ЯРПНЙ ОНЯКЕ ОНЯКЕДМЕИ ГЮОХЯХ, ЙНМЕВМЮЪ newline СДЮКЪЕРЯЪ ХГ ГЮОХЯХ. бН БРНПНЛ ЯКСВЮЕ РЮЙЮЪ ЯОЕЖХЮКЭМЮЪ НАПЮАНРЙЮ МЕ ОПНХГБНДХРЯЪ (d.c.). рЕОЕПЭ, ЙНЦДЮ ББНД ПЮГДЕКЕМ МЮ ГЮОХЯХ, ЯКЕДСЧЫХИ ЬЮЦ ЯНЯРНХР Б ПЮГДЕКЕМХХ ОНКЕИ Б ГЮОХЯХ. нДХМ ОСРЭ ЯНЯРНХР Б ПЮГДЕКЕМХХ ЙЮФДНИ ЯРПНЙХ МЮ ОНКЪ НАШВМШЛ НАПЮГНЛ. щРН ОПНХЯУНДХР ОН СЛНКВЮМХЧ Б ПЕГСКЭРЮРЕ ЯКЕДСЧЫЕИ НЯНАЕММНЯРХ: ЙНЦДЮ RS ОПХЯБНЕМЮ ОСЯРЮЪ ЖЕОНВЙЮ string, ЯХЛБНК newline БЯЕЦДЮ ДЕИЯРБСЕР ЙЮЙ ПЮГДЕКХРЕКЭ ОНКЕИ. щРН ОПНХЯУНДХР ДНОНКМХРЕКЭМН Й БЯЪЙНЛС ПЮГДЕКХРЕКЧ ОНКЕИ, ОПНХЯРЕЙЮЧЫЕЛС НР FS. хЯУНДМШЛ ЛНРХБНЛ ДКЪ ЩРНЦН ЯОЕЖХЮКЭМНЦН ХЯЙКЧВЕМХЪ АШКН, ОН-БХДХЛНЛС, МЮЛЕПЕМХЕ ДНАХРЭЯЪ ОНКЕГМНЦН ОНБЕДЕМХЪ Б ЯКСВЮЕ ДЕИЯРБХЪ ОН СЛНКВЮМХЧ (Р.Е. ЙНЦДЮ FS ПЮБМН " "). мН ЩРН ЛНФЕР ОПХБЕЯРХ Й ОПНАКЕЛЮЛ, ЕЯКХ БШ МЕ УНРХРЕ, ВРНАШ ЯХЛБНК newline ПЮГДЕКЪК ОНКЪ, ОНЯЙНКЭЙС МЕР ЯОНЯНАЮ ОПЕДНРБПЮРХРЭ РЮЙНЕ ДЕИЯРБХЕ. мН ЛНФМН НАНИРХ ЯХРСЮЖХЧ, ХЯОНКЭГСЪ ТСМЙЖХЧ split ДКЪ ПЮЯВКЕМЕМХЪ ГЮОХЯХ БПСВМСЧ (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ДЕИЯРБХИ ЯН ЯРПНЙЮЛХ], ЯРП. 137). дПСЦНИ ОСРЭ ДКЪ НРДЕКЕМХЪ ОНКЕИ ЕЯРЭ ПЮЯОНКНФЕМХЕ ОНКЕИ МЮ ПЮГМШУ ЯРПНЙЮУ: ВРНАШ ЯДЕКЮРЭ ЩРН, ДНЯРЮРНВМН ОПХЯБНХРЭ ОЕПЕЛЕММНИ FS ЖЕОНВЙС ""n". (щРН ОПНЯРНЕ ПЕЦСКЪПМНЕ БШПЮФЕМХЕ ЯННРБЕРЯРБСЕР НДХМНВМНИ newline.) оПЮЙРХВЕЯЙХЛ ОПХЛЕПНЛ ТЮИКЮ ДЮММШУ, НПЦЮМХГНБЮММНЦН РЮЙХЛ НАПЮГНЛ, ЛНФЕР АШРЭ ЯОХЯНЙ ЮДПЕЯНБ, ЦДЕ ВКЕМШ ЯОХЯЙЮ ПЮГДЕКЕМШ ОСЯРШЛХ ЯРПНЙЮЛХ. еЯКХ ЯОХЯНЙ ЮДПЕЯНБ МЮУНДХРЯЪ Б ТЮИКЕ Я ХЛЕМЕЛ `addresses', НМ БШЦКЪДХР ОПХЛЕПМН РЮЙ: Jane Doe 123 Main Street Anywhere, SE 12345-6789 John Smith 456 Tree-lined Avenue Smallville, MW 98765-4321 ... оПНЯРЮЪ ОПНЦПЮЛЛЮ НАПЮАНРЙХ РЮЙНЦН ТЮИКЮ АСДЕР ОНДНАМЮ ЯКЕДСЧЫЕИ: # addrs.awk --- ОПНЯРЮЪ ОПНЦПЮЛЛЮ ДКЪ ЯОХЯНЙ ЮДПЕЯНБ # гЮОХЯХ ПЮГДЕКЕМШ ОСЯРШЛХ ЯРПНЙЮЛХ. # йЮФДЮЪ ГЮОХЯЭ ЯНЯРНХР ХГ НДМНЦН ОНКЪ. BEGIN - RS = "" ; FS = ""n" "" - print "Name is:", $1 print "Address is:", $2 print "City and State are:", $3 print "" "" хЯОНКМЕМХЕ ОПНЦПЮЛЛШ ОНПНДХР ЯКЕДСЧЫХИ БШУНД: $ awk -f addrs.awk addresses a Name is: Jane Doe a Address is: 123 Main Street a City and State are: Anywhere, SE 12345-6789 a a Name is: John Smith a Address is: 456 Tree-lined Avenue a City and State are: Smallville, MW 98765-4321 a... яЛ. ПЮГДЕК 16.2.4 [оЕВЮРЭ ОНВРНБШУ ЛЕРНЙ], ЯРП. 233, ЦДЕ ХЛЕЧРЯЪ АНКЕЕ ХМРЕПЕЯМШЕ ОПНЦПЮЛЛШ Я ЮДПЕЯМШЛХ ЯОХЯЙЮЛХ. яКЕДСЧЫЮЪ РЮАКХЖЮ ЯНДЕПФХР ЙПЮРЙХЕ ЯБЕДЕМХЪ Н ПЮГДЕКЕМХХ ГЮОХЯЕИ Я ОНЛНЫЭЧ ГМЮВЕМХЪ RS. (`==' НГМЮВЮЕР "ХЛЕЕР ГМЮВЕМХЕ") RS == ""n" гЮОХЯХ ПЮГДЕКЕМШ ЯХЛБНКЮЛХ newline (`"n'). б ДЕИЯРБХРЕКЭМНЯРХ, ЙЮФДЮЪ ЯРПНЙЮ Б ТЮИКЕ ДЮММШУ ЕЯРЭ НРДЕКЭМЮЪ ГЮОХЯЭ, БЙКЧВЮЧЫЮЪ ОСЯРШЕ ЯРПНЙХ. щРН --- ДЕИЯРБХЪ ОН СЛНКВЮМХЧ. RS == КЧАНИ НДХМНВМШИ ЯХЛБНК гЮОХЯХ ПЮГДЕКЪЧРЯЪ БУНФДЕМХЪЛХ ЩРНЦН ЯХЛБНКЮ. йПЮРМШЕ ОНЯКЕДНБЮРЕКЭМШЕ БУНФДЕМХЪ НЦПЮМХВХБЮЧР ОСЯРШЕ ГЮОХЯХ. RS == "" гЮОХЯХ ПЮГДЕКЪЧРЯЪ ЦПСООЮЛХ ОСЯРШУ ЯРПНЙ. яХЛБНК newline БЯЕЦДЮ НГМЮВЮЕР ПЮГДЕКХРЕКЭ ОНКЕИ, Б ДНОНКМЕМХЕ Й КЧАНЛС ГМЮВЕМХЧ Б FS. бЕДСЫХЕ Х ГЮЙКЧВХРЕКЭМШЕ newline Б ТЮИКЕ ХЦМНПХПСЧРЯЪ. RS == regexp гЮОХЯХ ПЮГДЕКЪЧРЯЪ БУНФДЕМХЪЛХ ЯХЛБНКНБ, ЯННРБЕРЯРБСЧЫХУ regexp. бЕДСЫХЕ Х ГЮЙКЧВХРЕКЭМШЕ ЯННРБЕРЯРБХЪ regexp НЦПЮМХВХБЮЧР ОСЯРШЕ ГЮОХЯХ. бН БЯЕУ ЯКСВЮЪУ gawk ОПХЯБЮХБЮЕР RT БУНДМНИ РЕЙЯР, ЯННРБЕРЯРБСЧЫХИ ГМЮВЕМХЧ, СЙЮГЮММНЛС Б RS. 5.8 ъБМШИ ББНД ОН ЙНЛЮМДЕ getlineдН ЯХУ ОНП ЛШ ОНКСВЮКХ МЮЬХ БУНДМШЕ ДЮММШЕ ХГ ЦКЮБМНЦН БУНДМНЦН ОНРНЙЮ awk, Р.Е. ХКХ ХГ ЯРЮМДЮПРМНЦН СЯРПНИЯРБЮ ББНДЮ (НАШВМН БЮЬ РЕПЛХМЮК, ХМНЦДЮ НР БШУНДЮ ДПСЦНИ ОПНЦПЮЛЛШ), ХКХ ХГ ТЮИКНБ, СЙЮГЮММШУ Б ЙНЛЮМДМНИ ЯРПНЙЕ. ъГШЙ awk ХЛЕЕР ЯОЕЖХЮКЭМСЧ БЯРПНЕММСЧ ЙНЛЮМДС, МЮГШБЮЕЛСЧ getline, ЙНРНПСЧ ЛНФМН ХЯОНКЭГНБЮРЭ ДКЪ ВРЕМХЪ ББНДЮ ОНД ЪБМШЛ ЙНМРПНКЕЛ ОНКЭГНБЮРЕКЪ. 5.8.1 бБЕДЕМХЕ ДКЪ getlineщРЮ ЙНЛЮМДЮ ХЯОНКЭГСЕРЯЪ МЕЯЙНКЭЙХЛХ ПЮГКХВМШЛХ ЯОНЯНАЮЛХ Х МЕ ПЕЙНЛЕМДСЕРЯЪ ДКЪ МЮВХМЮЧЫХУ. нМЮ НОХЯШБЮЕРЯЪ ГДЕЯЭ ОНРНЛС, ВРН БЯЪ МЮЯРНЪЫЮЪ ЦКЮБЮ ОНЯБЪЫЕМЮ ББНДС. оПХЛЕПШ, ЙНРНПШЕ ЯКЕДСЧР ГЮ НАЗЪЯМЕМХЪЛХ ДЕИЯРБХИ getline, ЯНДЕПФЮР ЛЮРЕПХЮК, ЙНРНПШИ ЕЫЕ МЕ НОХЯШБЮКЯЪ. оНЩРНЛС ЛШ ПЕЙНЛЕМДСЕЛ БЮЛ БЕПМСРЭЯЪ МЮГЮД ДКЪ ХГСВЕМХЪ ЙНЛЮМДШ getline ОНЯКЕ РНЦН, ЙЮЙ БШ ОНГМЮЙНЛХРЕЯЭ Я НЯРЮКЭМНИ ВЮЯРЭЧ ЙМХЦХ Х ОПХНАПЕРЕРЕ РБЕПДШЕ ГМЮМХЪ РНЦН, ЙЮЙ ПЮАНРЮЕР awk. getline БНГБПЮЫЮЕР ЙНД 1, ЕЯКХ МЮЬКЮ ГЮОХЯЭ, Х ЙНД 0 ЕЯКХ НАМЮПСФХКЮ ЙНМЕЖ ТЮИКЮ. еЯКХ ОПХ ОНХЯЙЕ ГЮОХЯХ НАМЮПСФЕМН, ВРН ТЮИК МЕКЭГЪ НРЙПШРЭ, РН getline БШДЮЕР \Gamma 1. б РЮЙНЛ ЯКСВЮЕ gawk СЯРЮМЮБКХБЮЕР Б ОЕПЕЛЕММНИ ERRNO ЖЕОНВЙС Я НОХЯЮМХЕЛ ЯКСВХБЬЕИЯЪ НЬХАЙХ. б ОНЯКЕДСЧЫХУ ОПХЛЕПЮУ ЯКНБН command ГЮЛЕМЪЕР ГМЮВЕМХЕ ЖЕОНВЙХ, ОПЕДЯРЮБКЪЧЫЕИ ЙНЛЮМДС НАНКНВЙХ. 5.8.2 хЯОНКЭГНБЮМХЕ getline АЕГ ЮПЦСЛЕМРНБйНЛЮМДЮ getline АЕГ ЮПЦСЛЕМРНБ ЛНФЕР ХЯОНКЭГНБЮРЭЯЪ ДКЪ ВРЕМХЪ ХГ РЕЙСЫЕЦН БУНДМНЦН ТЮИКЮ. бЯЕ, ВРН НМЮ ДЕКЮЕР Б ЩРНЛ ЯКСВЮЕ, ЯНЯРНХР Б ВРЕМХХ ЯКЕДСЧЫЕИ БУНДМНИ ГЮОХЯХ Х ПЮЯВКЕМЕМХХ ЕЕ МЮ ОНКЪ. щРН ОНКЕГМН, ЕЯКХ БШ ГЮЙНМВХКХ НАПЮАНРЙС РЕЙСЫЕИ ГЮОХЯХ Х УНРХРЕ ОНДБЕПЦМСРЭ ЯКЕДСЧЫСЧ ГЮОХЯЭ ЙЮЙНИ-РН ЯОЕЖХЮКЭМНИ НАПЮАНРЙЕ. пЮЯЯЛНРПХЛ ОПХЛЕП: awk '- if ((t = index($0, "/*")) != 0) - # value will be "" if t is 1 tmp = substr($0, 1, t - 1) u = index (substr($0, t + 2), "*/") while (u == 0) - if (getline != 0) - m = "unexpected EOF or error" m = (m ": " ERRNO) print m ? "/dev/stderr" exit "" t = -1 u = index($0, "*/") "" # substr expression will be "" if */ # occurred at end of line $0 = tmp substr($0, t + u + 3) "" print $0 ""' щРЮ awk-ОПНЦПЮЛЛЮ СДЮКЪЕР БЯЕ ЙНЛЛЕМРЮПХХ CХ-РХОЮ, `/* ... */', ХГ ББНДЮ. оНЯПЕДЯРБНЛ ГЮЛЕМШ `print $0' ДПСЦХЛХ НОЕПЮРНПЮЛХ БШ ЛНФЕРЕ НЯСЫЕЯРБХРЭ АНКЕЕ ЯКНФМСЧ НАПЮАНРЙС ББНДЮ Я СДЮКЕММШЛХ ЙНЛЛЕМРЮПХЪЛХ, РЮЙСЧ ЙЮЙ ОНХЯЙ ЯННРБЕРЯРБХИ ПЕЦСКЪПМНЛС БШПЮФЕМХЧ. щРЮ ОПНЦПЮЛЛЮ ХЛЕЕР НДХМ МЕДНЯРЮРНЙ --- НМЮ МЕ ПЮАНРЮЕР, ЕЯКХ НДХМ ЙНЛЛЕМРЮПХИ ЙНМВЮЕРЯЪ, Ю ДПСЦНИ МЮВХМЮЕРЯЪ МЮ РНИ ФЕ ЯРПНЙЕ. щРЮ ТНПЛЮ ЙНЛЮМДШ getline СЯРЮМЮБКХБЮЕР NF (ЙНКХВЕЯРБН ОНКЕИ; ЯЛ. ПЮГДЕК 5.2 [нАЯКЕДНБЮМХЕ ОНКЕИ], ЯРП. 40), NR (ЙНКХВЕЯРБН ОПНВХРЮММШУ ОНЙЮ ГЮОХЯЕИ; ЯЛ. ПЮГДЕК 5.1 [йЮЙ ББНД ПЮГДЕКЪЕРЯЪ МЮ ГЮОХЯХ, ЯРП. 37), FNR (ЙНКХВЕЯРБН ГЮОХЯЕИ, ОПНВХРЮММШУ Х РЕЙСЫЕЦН ТЮИКЮ) Х ГМЮВЕМХЕ $0. гЮЛЕВЮМХЕ: МНБНЕ ГМЮВЕМХЕ $0 ХЯОНКЭГСЕРЯЪ ДКЪ ОПНБЕПЙХ НАПЮГЖНБ КЧАШУ ОНЯКЕДСЧЫХУ ОПЮБХК. хЯУНДМНЕ ГМЮВЕМХЕ $0, ЙНРНПНЕ БШГБЮКН ОПЮБХКН Я БШОНКМЕМХЕЛ getline, ОПНОЮДЮЕР (d.c.). б НРКХВХЕ НР ЩРНЦН, ЯКЕДСЧЫХИ НОЕПЮРНП ВХРЮЕР МНБСЧ ГЮОХЯЭ Х МЕЛЕДКЕММН МЮВХМЮЕР ЕЕ НАПЮАНРЙС МНПЛЮКЭМШЛ НАПЮГНЛ, МЮВХМЮЪ Я ОЕПБНЦН ОПЮБХКЮ Б ОПНЦПЮЛЛЕ. яЛ. ПЮГДЕК 9.7 [яКЕДСЧЫХИ НОЕПЮРНП], ЯРП.111. 5.8.3 хЯОНКЭГНБЮМХЕ getline Б ОЕПЕЛЕММСЧлНФМН БНЯОНКЭГНБЮРЭЯЪ `getline var' ДКЪ ВРЕМХЪ ЯКЕДСЧЫЕИ ГЮОХЯХ ХГ ББНДЮ awk Б ОЕПЕЛЕММСЧ. мХЙЮЙНИ ДПСЦНИ НАПЮАНРЙХ ОПХ ЩРНЛ МЕ ОПНХЯУНДХР. мЮОПХЛЕП, ОПЕДОНКНФХЛ, ВРН ЯКЕДСЧЫЮЪ ЯРПНЙЮ ЕЯРЭ ЙНЛЛЕМРЮПХИ ХКХ МЕЙНРНПЮЪ ЯОЕЖХЮКЭМЮЪ ЖЕОНВЙЮ Х БШ УНРХРЕ ОПНВЕЯРЭ ЕЕ АЕГ СОНРПЕАКЕМХЪ ЙЮЙХУ-МХАСДЭ ОПЮБХК. щРЮ ТНПЛЮ getline ОНГБНКЪЕР БЮЛ ОПНВЕЯРЭ ЩРС ЯРПНЙС Х ГЮОНЛМХРЭ ЕЕ Б ОЕПЕЛЕММНИ РЮЙ ВРН ЦКЮБМШИ ЖХЙК ВХРЮРЭ-ЯРПНЙС-Х-ОПНБЕПЪРЭ-ЙЮФДНЕ-ОПЮБХКН ЕЕ МХЙНЦДЮ МЕ НАМЮПСФХР. яКЕДСЧЫХИ ОПХЛЕП ОЕПЕЯРЮБКЪЕР ЙЮФДСЧ ОЮПС ЯРПНЙ Б ББНДЕ. оСЯРЭ ГЮДЮМШ: wan tew free phore рНЦДЮ НМ БШДЮЯР: tew wan phore free бНР ЩРЮ ОПНЦПЮЛЛЮ: awk '- if ((getline tmp) ? 0) - print tmp print $0 "" else print $0 ""' рЮЙЮЪ ТНПЛЮ getline СЯРЮМЮБКХБЮЕР РНКЭЙН ОЕПЕЛЕММШЕ NR and FNR (Х, ЙНМЕВМН, var). гЮОХЯЭ МЕ ПЮГДЕКЪЕРЯЪ МЮ ОНКЪ, РЮЙ ВРН ГМЮВЕМХЪ ОНКЕИ (БЙКЧВЮЪ $0) Х ГМЮВЕМХЕ NF МЕ ЛЕМЪЧРЯЪ. 5.8.4 сОНРПЕАКЕМХЕ getline ХГ ТЮИКЮ`getline ! file' ХЯОНКЭГСЕРЯЪ ДКЪ ВРЕМХЪ ЯКЕДСЧЫЕИ ГЮОХЯХ ХГ ТЮИКЮ file. гДЕЯЭ file ЕЯРЭ БШПЮФЕМХЕ ЯН ГМЮВЕМХЕЛ ЖЕОНВЙХ, СЙЮГШБЮЧЫЕИ ХЛЪ ТЮИКЮ. `! file' МЮГШБЮЕРЯЪ ОЕПЕМЮОПЮБКЕМХЕЛ, ОНЯЙНКЭЙС ОЕПЕ МЮОПЮБКЪЕР ББНД МЮ ДПСЦНИ ХЯРНВМХЙ. мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ВХРЮЕР ЯБНХ БУНДМШЕ ГЮОХЯХ ХГ ТЮИКЮ `secondary.input' ОНЯКЕ НАМЮПСФЕМХЪ ОЕПБНЦН ОНКЪ ЯН ГМЮВЕМХЕЛ, ПЮБМШЛ 10 Б РЕЙСЫЕЛ БУНДМНЛ ТЮИКЕ. awk '- if ($1 == 10) - getline ! "secondary.input" print "" else print ""' оНЯЙНКЭЙС ЦКЮБМШИ БУНДМНИ ОНРНЙ МЕ ХЯОНКЭГСЕРЯЪ, ГМЮВЕМХЪ NR Х FNR МЕ ЛЕМЪЧРЯЪ. мН ОПНВРЕММЮЪ ГЮОХЯЭ ПЮГДЕКЪЕРЯЪ МЮ ОНКЪ МНПЛЮКЭМШЛ НАПЮГНЛ, РЮЙ ВРН ГМЮВЕМХЪ $0 Х ДПСЦХУ ОНКЕИ ХГЛЕМЪЧРЯЪ. ю РЮЙФЕ ГМЮВЕМХЕ NF. б ЯННРБЕРЯРБХХ Я POSIX, `getline ! expression' МЕ НОПЕДЕКЕМН, ЕЯКХ expression ЯНДЕПФХР НОЕПЮРНПШ АЕГ ЯЙНАНЙ, НРКХВМШЕ НР `$'; МЮОПХЛЕП , `getline ! dir "/" file' МЕ НОПЕДЕКЕМН, ОНЯЙНКЭЙС НОЕПЮРНП ЙНМЙЮРЕМЮЖХХ МЕ ГЮЙКЧВЕМ Б ЯЙНАЙХ. мСФМН ОХЯЮРЭ `getline ! (dir "/" file)', ЕЯКХ БШ УНРХРЕ, ВРНАШ БЮЬЮ ОПНЦПЮЛЛЮ АШКЮ ОЕПЕМНЯХЛНИ МЮ ДПСЦХЕ ПЕЮКХГЮЖХХ awk. 5.8.5 хЯОНКЭГНБЮМХЕ getline Б ОЕПЕЛЕММСЧ ХГ ТЮИКЮйНЛЮМДЮ `getline var ! file' ХЯОНКЭГСЕРЯЪ ДКЪ ВРЕМХЪ ББНДЮ ХГ ТЮИКЮ file Х ОНЛЕЫЕМХЪ ЕЦН Б ОЕПЕЛЕММСЧ var. йЮЙ Х БШЬЕ, file НГМЮВЮЕР БШПЮФЕМХЕ ЯН ГМЮВЕМХЕЛ ЖЕОНВЙХ, ЙНРНПНЕ НОПЕДЕКЪЕР ТЮИК ДКЪ ВРЕМХЪ. б ЩРНЛ БЮПХЮМРЕ getline МХ НДМЮ ХГ БЯРПНЕММШУ ОЕПЕЛЕММШУ МЕ ЛЕМЪЕРЯЪ Х ГЮОХЯЭ МЕ ПЮГДЕКЪЕРЯЪ МЮ ОНКЪ. хГЛЕМЪЕРЯЪ РНКЭЙН ОЕПЕЛЕММЮЪ var. мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ЙНОХПСЕР БЯЕ БУНДМШЕ ТЮИКШ МЮ БШУНД, ГЮ ХЯЙКЧВЕМХЕЛ ГЮОХЯЕИ БХДЮ: `@include filename'. йЮФДЮЪ РЮЙЮЪ ГЮОХЯЭ ГЮЛЕМЪЕРЯЪ ЯНДЕПФХЛШЛ ТЮИКЮ filename. awk '- if (NF == 2 && $1 == "@include") - while ((getline line ! $2) ? 0) print line close($2) "" else print ""' гЮЛЕРХЛ, ВРН ГДЕЯЭ ХЛЪ ДНОНКМХРЕКЭМНЦН БУНДМНЦН ТЮИКЮ МЕ БЯРПНЕМН Б ОПНЦПЮЛЛС; НМН АЕПЕРЯЪ ХГ ДЮММШУ, a ХГ БРНПНЦН ОНКЪ Б ЯРПНЙЕ `@include'. тСМЙЖХЪ close БШГШБЮЕРЯЪ ДКЪ НАЕЯОЕВЕМХЪ РНЦН, ВРН ЕЯКХ ДБЕ НДХМЮЙНБШУ ЯРПНЙХ `@include' ОНЪБЪРЯЪ БН ББНДЕ, РН БЕЯЭ СЙЮГЮММШИ ТЮИК АСДЕР БЙКЧВЕМ ДБЮФДШ. яЛ. ПЮГДЕК 6.8 [гЮЙПШРХЕ БУНДМШУ Х БШУНДМШУ ТЮИКНБ Х ЙНМБЕИЕПШ], ЯРП. 74. мЕДНЯРЮРНЙ ЩРНИ ОПНЦПЮЛЛШ Б РНЛ, ВРН НМЮ МЕ НАПЮАЮРШБЮЕР БКНФЕММШЕ `@include' (НОЕПЮРНПШ `@include' Б БЙКЧВЮЕЛШУ ТЮИКЮУ) РЮЙ, ЙЮЙ ЩРН ДЕКЮЕР ЛЮЙПН-ОПЕОПНЖЕЯЯНП. яЛ. ПЮГДЕК 16.2.9 [оПНЯРНИ ЯОНЯНА ХЯОНКЭГНБЮМХЪ АХАКХНРЕВМШУ ТСМЙЖХИ], ЯРП. 244, Н ОПНЦПЮЛЛЮУ, ЙНРНПШЕ НАПЮАЮРШБЮЧР БКНФЕММШЕ НОЕПЮРНПШ `@include'. 5.8.6 хЯОНКЭГНБЮМХЕ getline ХГ ЙНМБЕИЕПЮлНФМН ОЕПЕДЮБЮРЭ ЙНМБЕИЕПНЛ (pipe) БШУНД НР command Й getline, ХЯОНКЭГСЪ `command -- getline'. б РЮЙНЛ ЯКСВЮЕ ЯКНБН command ХЯОНКМЪЕРЯЪ ЙЮЙ ЙНЛЮМДЮ НАНКНВЙХ Х ЕЕ БШУНД ОЕПЕДЮЕРЯЪ Б awk ДКЪ ХЯОНКЭГНБЮМХЪ Б ЙЮВЕЯРБЕ ББНДЮ. щРЮ ТНПЛЮ getline ВХРЮЕР ГЮ ПЮГ НДМС ГЮОХЯЭ ХГ ЙНМБЕИЕПЮ. мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ЙНОХПСЕР ЕЕ ББНД МЮ БШБНД, ГЮ ХЯЙКЧВЕМХЕЛ ЯРПНЙ, ЙНРНПШЕ МЮВХМЮЧРЯЪ Я `@execute'; РЮЙХЕ ЯРПНЙХ ГЮЛЕМЪЧРЯЪ БШУНДНЛ, ОНКСВЕММШЛ ОПХ БШОНКМЕМХХ НЯРЮРЙЮ ЯРПНЙХ Б ЙЮВЕЯРБЕ ЙНЛЮМДШ НАНКНВЙХ. awk '- if ($1 == "@execute") - tmp = substr($0, 10) while ((tmp -- getline) ? 0) print close(tmp) "" else print ""' тСМЙЖХЪ close БШГШБЮЕРЯЪ ДКЪ РНЦН, ВРНАШ Б ЯКСВЮЕ ДБСУ ХДЕМРХВМШУ ЯРПНЙ `@execute' БН БУНДЕ ЙНЛЮМДЮ command БШОНКМЪКЮЯЭ ДКЪ ЙЮФДНИ ХГ МХУ. яЛ. ПЮГДЕК 6.8 [гЮЙПШРХЕ БУНДМШУ Х БШУНДМШУ ТЮИКНБ Х ЙНМБЕИЕПШ], ЯРП. 74. оСЯРЭ ГЮДЮМ ББНД: foo bar baz @execute who bletch ОПНЦПЮЛЛЮ ЛНФЕР БШДЮРЭ: foo bar baz arnold ttyv0 Jul 13 14:22 miriam ttyp0 Jul 13 14:23 (murphy:0) bill ttyp1 Jul 13 14:23 (murphy:0) bletch гЮЛЕРХЛ, ВРН ЩРЮ ОПНЦПЮЛЛЮ БШОНКМЪЕР ЙНЛЮМДС who Х ОЕВЮРЮЕР ПЕГСКЭРЮР. (еЯКХ БШ ЯЮЛХ ГЮОСЯРХРЕ ЩРС ОПНЦПЮЛЛС, БШ ОНКСВХРЕ, ЙНМЕВМН, ДПСЦНИ ПЕГСКЭРЮР, ОНЙЮГШБЮЧЫХИ БЮЛ, ЙРН ЯЕИВЮЯ ПЮАНРЮЕР МЮ БЮЬЕИ ЯХЯРЕЛЕ.) щРНР БЮПХЮМР getline ПЮГДЕКЪЕР ГЮОХЯХ МЮ ОНКЪ, СЯРЮМЮБКХБЮЕР ГМЮВЕМХЕ NF Х ОЕПЕ БШВХЯКЪЕР ГМЮВЕМХЕ $0. гМЮВЕМХЪ NR Х FNR МЕ ЛЕМЪЧРЯЪ. б ЯННРБЕРЯРБХХ Я POSIX, `expression -- getline' МЕ НОПЕДЕКЕМЮ, ЕЯКХ expression ЯНДЕПФХР МЕ ГЮЙКЧВЕММШЕ Б ЯЙНАЙХ НОЕПЮРНПШ, НРКХВМШЕ НР `$'; МЮОПХЛЕП, `"echo " "date" -- getline' МЕ НОПЕДЕКЕМЮ, РЮЙ ЙЮЙ ЙНМЙЮРЕМЮЖХЪ МЕ ГЮЙКЧВЕМЮ Б ЯЙНАЙХ, МСФМН ОХЯЮРЭ `("echo " "date") -- getline', ВРНАШ ОПНЦПЮЛЛЮ АШКЮ ОЕПЕМНЯХЛНИ МЮ ДПСЦХЕ ПЕЮКХГЮЖХХ awks. (аШБЮЕР, ВРН gawk ЕЕ БШОНКМХР ОПЮБХКЭМН, МН МЮ ЩРН МЕ МЮДН ОНКЮЦЮРЭЯЪ. бН БЯЪЙНЛ ЯКСВЮЕ, ЯЙНАЙХ ДЕКЮЧР ОПНЦПЮЛЛС КЕЦВЕ ВХРЮЕЛНИ.) 5.8.7 хЯОНКЭГНБЮМХЕ getline Б ОЕПЕЛЕММСЧ ХГ ЙНМБЕИЕПЮеЯКХ БШ СОНРПЕАХРЕ `command -- getline var', БШУНД ЙНЛЮМДШ command АСДЕР ОНЯКЮМ ОН ЙНМБЕИЕПС Б getline Х Б ОЕПЕЛЕММСЧ var. мЮОПХЛЕП, ЯКЕДСЧЫЮЪ ОПНЦПЮЛЛЮ ВХРЮЕР РЕЙСЫХЕ ДЮРС Х БПЕЛЪ Б ОЕПЕЛЕММСЧ current.time, ХЯОНКЭГСЪ СРХКХРС date, Ю ГЮРЕЛ ОЕВЮРЮЕР ГМЮВЕМХЕ ОЕПЕЛЕММНИ. awk 'BEGIN - "date" -- getline current.time close("date") print "Report printed on " current.time ""' б ЩРНИ БЕПЯХХ getline МЕ ЛЕМЪЕРЯЪ МХ НДМЮ ХГ БЯРПНЕММШУ ОЕПЕЛЕММШУ Х ГЮОХЯЭ МЕ ПЮГДЕКЪЕРЯЪ МЮ ОНКЪ. 5.8.8 яБНДЙЮ БЮПХЮМРНБ getlineдКЪ БЯЕУ ТНПЛ getline, ДЮФЕ ЕЯКХ $0 Х NF НАМНБКЪЧРЯЪ, ГЮОХЯЭ МЕ ОПНБЕПЪЕРЯЪ ОН НРМНЬЕМХЧ Й БЯЕЛ НАПЮГЖЮЛ Б awk-ОПНЦПЮЛЛЕ, РЮЙ, ЙЮЙ ЩРН АШКН АШ Б ЯКСВЮЕ ВРЕМХЪ ГЮОХЯХ МНПЛЮКЭМН, Б ЦКЮБМНЛ ЖХЙКЕ НАПЮАНРЙХ awk. нДМЮЙН, МНБЮЪ ГЮОХЯЭ ОПНБЕПЪЕРЯЪ ОН ЙЮФДНЛС ОНЯКЕДСЧЫЕЛС ОПЮБХКС. лМНЦХЕ ПЕЮКХГЮЖХХ awk НЦПЮМХВХБЮЧР ЙНКХВЕЯРБН ЙНМБЕИЕПНБ, ЙНРНПШЕ ЛНФЕР НРЙПШРЭ awk-ОПНЦПЮЛЛЮ, РНКЭЙН НДМХЛ! б gawk РЮЙНЦН НЦПЮМХВЕМХЪ МЕР. лНФМ НРЙПШРЭ ЯРНКЭЙН ЙНМБЕИЕПНБ, ЯЙНКЭЙН ОНГБНКЪЕР НОЕПЮЖХНММЮЪ ЯХЯРЕЛЮ. хМРЕПЕЯМШИ ОНАНВМШИ ЩТТЕЙР ЛНФЕР ЯКСВХРЭЯЪ, ЕЯКХ БШ ХЯОНКЭГСЕРЕ getline (АЕГ ОЕПЕМЮОПЮБКЕМХИ) БМСРПХ ОПЮБХКЮ BEGIN. оНЯЙНКЭЙС МЕ ОЕПЕМЮОПЮБКЕММЮЪ getline ВХРЮЕР ХГ ТЮИКНБ ДЮММШУ ЙНЛЮМДМНИ ЯРПНЙХ, ОЕПБЮЪ ЙНЛЮМДЮ getline ГЮЯРЮБКЪЕР awk СЯРЮМНБХРЭ ГМЮВЕМХЕ Б FILENAME. мНПЛЮКЭМН FILENAME МЕ ХЛЕЕР ГМЮВЕМХЪ БМСРПХ ОПЮБХК BEGIN, ОНЯЙНКЭЙС ЕЫЕ МЕ МЮВЮКЮЯЭ НАПЮАНРЙЮ ТЮИКНБ Я ДЮММШЛХ, СЙЮГЮММШУ Б ЙНЛЮМДМНИ ЯРПНЙЕ (d.c.). (яЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП. 100, Х ПЮГДЕК 10.2 [бЯРПНЕММШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЕ ОЕПЕДЮЧР ХМТНПЛЮЖХЧ], ЯРП. 117.) яКЕДСЧЫЮЪ РЮАКХЖЮ ОНДБНДХР ХРНЦ ЬЕЯРХ БЮПХЮМРЮЛ getline Х ОЕПЕВХЯКЪЕР БЯРПНЕММШЕ ОЕПЕЛЕММШЕ, ЙНРНПШЕ СЯРЮМЮБКХБЮЧРЯЪ Б ЙЮФДНЛ ХГ БЮПХЮМРНБ. getline СЯРЮМЮБКХБЮЕР $0, NF, FNR and NR. getline var СЯРЮМЮБКХБЮЕР var, FNR and NR. getline ! file СЯРЮМЮБКХБЮЕР $0 and NF. getline var ! file СЯРЮМЮБКХБЮЕР var. command -- getline СЯРЮМЮБХБЮЕР $0 Х and NF. command -- getline var СЯРЮМЮБКХБЮЕР var. |
<<< | нЦКЮБКЕМХЕ | яРПЮМХЖШ: 5 6 | >>> |