пСЙНБНДЯРБН ОНКЭГНБЮРЕКЪ ДКЪ GNU Awk
6. оЕВЮРМШИ БШБНДнЦКЮБКЕМХЕ
нДМН ХГ МЮХАНКЕЕ ВЮЯРШУ ДЕИЯРБХИ ЕЯРЭ ОЕВЮРЭ, ХКХ БШБНД, ВЮЯРХ ХКХ БЯЕЦН БУНДЮ. нОЕПЮРНП print ХЯОНКЭГСЕРЯЪ ДКЪ ОПНЯРНЦН БШБНДЮ. нОЕПЮРНП printf СОНРПЕАКЪЧР ГМЮРНЙХ ТНПЛЮРХПНБЮМХЪ. нАЮ НОЕПЮРНПЮ НОХЯЮМШ Б ЩРНИ ЦКЮБЕ. 6.1 нОЕПЮРНП printнОЕПЮРНП print ОПНХГБНДХР ОЕВЮРЭ Б ЯРЮМДЮПРМНЛ ТНПЛЮРЕ. бШ РНКЭЙН СЙЮГШБЮЕРЕ ЖЕОНВЙХ Х МНЛЕПЮ ДКЪ ОЕВЮРХ Б ЯОХЯЙЕ, ПЮГДЕКЕММНЛ ГЮОЪРШЛХ. нМХ ОЕВЮРЮЧРЯЪ Я ПЮГДЕКЕМХЕЛ ОПНАЕКЮЛХ Х newline. нОЕПЮРНП БШЦКЪДХР РЮЙ: print item1, item2, ... бЕЯЭ ЯОХЯНЙ ЛНФМН ГЮЙКЧВЮРЭ Б ЯЙНАЙХ. нМХ МЕНАУНДХЛШ, ЕЯКХ Б ЙЮЙНЛ-МХАСДЭ ХГ БШПЮФЕМХИ Б ЯОХЯЙЕ ХЯОНКЭГСЕРЯЪ НОЕПЮЖХЪ НРМНЬЕМХЪ `?' ; Б ОПНРХБМНЛ ЯКСВЮЕ НМ ЛНФЕР АШРЭ ЯОСРЮМ Я ОЕПЕМЮОПЮБКЕМХЕЛ (ЯЛ. ПЮГДЕК 6.6 [оЕПЕМЮОПЮБКЕМХЪ БШУНДЮ print Х printf], ЯРП. 70). юПЦСЛЕМРШ (items) ЛНЦСР АШРЭ ЯРПНЙНБШЛХ ОНЯРНЪММШЛХ ХКХ ВХЯКЮЛХ, ОНКЪЛХ РЕЙСЫЕИ ГЮОХЯХ (РЮЙХЛХ ЙЮЙ $1), ОЕПЕЛЕММШЛХ ХКХ ДПСЦХЛХ БШПЮФЕМХЪЛХ awks. вХЯКЕММШЕ ГМЮВЕМХЪ ОПЕБПЮЫЮЧРЯЪ Б ЖЕОНВЙХ Х ГЮРЕЛ ОЕВЮРЮЧРЯЪ. нОЕПЮРНП print ПСЙНБНДЯРБСЕРЯЪ НАЫХЛХ ОПЮБХКЮЛХ. йПНЛЕ ДБСУ ХЯЙКЧВЕМХИ, БШ МЕ ЛНФЕРЕ СЙЮГШБЮРЭ ЙЮЙ ОЕВЮРЮРЭ ДЮММШЕ --- Б ЯЙНКЭЙН ЯРНКАЖНБ, ХЯОНКЭГНБЮРЭ КХ ЩЙЯОНМЕМЖХЮКЭМШЕ НАНГМЮВЕМХЪ ДКЪ ВХЯЕК Х ОП. (оН ОНБНДС ХЯЙКЧВЕМХИ ЯЛ. ПЮГДЕК 6.3 [пЮГДЕКХРЕКХ БШБНДЮ], ЯРП.63, Х ПЮГДЕК 6.4 [сОПЮБКЕМХЕ ВХЯКЕММШЛ БШБНДНЛ ОПХ ОЕВЮРХ], ЯРП 64.) дКЪ ЩРНЦН МСФЕМ НОЕПЮРНП printf (ЯЛ. ПЮГДЕК 6.5 [сОНРПЕАКЕМХЕ НОЕПЮРНПНБ printf ДКЪ ДЕЙНПЮРХБМНИ ОЕВЮРХ], ЯРП. 64). оПНЯРНИ НОЕПЮРНП `print' АЕГ ЮПЦСЛЕМРНБ ЩЙБХБЮКЕМРЕМ `print $0': НМ ОЕВЮРЮЕР БЯЧ РЕЙСЫСЧ ГЮОХЯЭ. дКЪ ОЕВЮРХ ОСЯРНИ ЯРПНЙХ СОНРПЕАКЪЧР `print ""', ЦДЕ "" НГМЮВЮЕР ОСЯРСЧ ЖЕОНВЙС. дКЪ ОЕВЮРХ ТХЙЯХПНБЮММНЦН ЙСЯЙЮ РЕЙЯРЮ ХЯОНКЭГСЧР ЯРПНЙНБШЕ ОНЯРНЪММШЕ, РЮЙХЕ ЙЮЙ "Don't Panic" Б ЙЮВЕЯРБЕ НДМНЦН ЮПЦСЛЕМРЮ. еЯКХ БШ ГЮАСДЕРЕ СЙЮГЮРЭ ЯХЛБНКШ ДБНИМШУ ЙЮБШВЕЙ, БЮЬ РЕЙЯР АСДЕР БНЯОПХМЪР ЙЮЙ БШПЮФЕМХЕ awk Х БШ, БЕПНЪРМН, ОНКСВХРЕ НЬХАЙС. оНЛМХРЕ, ВРН ОПНАЕК ОЕВЮРЮЕРЯЪ ЛЕФДС ЙЮФДНИ ОЮПНИ ГМЮВЕМХИ ЮПЦСЛЕМРНБ. йЮФДШИ НОЕПЮРНП print БШДЮЕР ОН ЙПЮИМЕИ ЛЕПЕ НДМС ЯРПНЙС, МН МЕ НЦПЮМХВХБЮЕРЯЪ НДМНИ ЯРПНЙНИ. еЯКХ ГМЮВЕМХЕ ЮПЦСЛЕМРЮ ЕЯРЭ ЖЕОНВЙЮ, ЯНДЕПФЮЫЮЪ newline, РН newline БУНДХР Б БШБНД БЛЕЯРЕ Я НЯРЮРЙНЛ ЖЕОНВЙХ. оНЩРНЛС НДХМ НОЕПЮРНП print ЩРХЛ ЯОНЯНАНЛ ЛНФЕР БШДЮРЭ КЧАНЕ ВХЯКН ЯРПНЙ. 6.2 оПХЛЕПШ НОЕПЮРНПНБ printбНР ОПХЛЕПШ ОЕВЮРХ ЖЕОНВЕЙ, ЯНДЕПФЮЫХУ БМСРПЕММХЕ newline (`"n' ЕЯРЭ СОПЮБКЪЧЫЮЪ ОНЯКЕДНБЮРЕКЭМНЯРЭ ДКЪ ОПЕДЯРЮБКЕМХЪ ЯХЛБНКЮ newline; ЯЛ. ПЮГДЕК 4.2 [сОПЮБКЪЧЫХЕ ОНЯКЕДНБЮРЕКЭМНЯРХ], ЯРП. 24): $ awk 'BEGIN - print "line one"nline two"nline three" ""' a line one a line two a line three яКЕДСЫХИ ОПХЛЕП ОЕВЮРЮЕР ДБЮ ОЕПБШУ ОНКЪ ЙЮФДНИ БУНДМНИ ГЮОХЯХ Я ОПНАЕКНЛ ЛЕФДС МХЛХ: $ awk '- print $1, $2 ""' inventory-shipped a Jan 13 a Feb 15 a Mar 15... нАШВМЮЪ НЬХАЙЮ ОПХ СОНРПЕАКЕМХХ НОЕПЮРНПЮ --- ОПНОСЯЙ ГЮОЪРНИ ЛЕФДС ДБСЛЪ ЮПЦСЛЕМРЮЛХ НОЕПЮРНПЮ print. щРН ВЮЯРН ОПХБНДХР Й ОЕВЮРХ ЮПЦСЛЕМРНБ МЮ БШУНДЕ ОНДПЪД, АЕГ ОПНАЕКНБ. оПХВХМЮ Б РНЛ, ВРН ПЮЯОНКНФЕМХЕ ПЪДНЛ ДБСУ ЯРПНЙНБШУ БШПЮФЕМХИ Б awk НГМЮВЮЕР ХУ ЙНМЙЮРЕМЮЖХЧ. бНР ПЕГСКЭРЮР РНИ ФЕ ЯЮЛНИ ОПНЦПЮЛЛШ Я ОПНОСЫЕММНИ ГЮОЪРНИ: $ awk '- print $1 $2 ""' inventory-shipped a Jan13 a Feb15 a Mar15... дКЪ ВЕКНБЕЙЮ, МЕГМЮЙНЛНЦН Я ТЮИКНЛ `inventory-shipped', ПЕГСКЭРЮР НАНХУ ОПХЛЕПНБ ХЛЕЕР ЛЮКН ЯЛШЯКЮ. гЮЦНКНБНЙ Б МЮВЮКЕ ОНЪЯМХР ПЕГСКЭРЮР. дНАЮБХЛ ГЮЦНКНБЙХ Й МЮЬЕИ РЮАКХЖЕ ЛЕЯЪЖЕБ ($1) Х ГЕКЕМШУ ЙНПГХМ, НРОПЮБКЕММШУ ЛНПЕЛ ($2). яДЕКЮЕЛ ЩРН Я ОНЛНЫЭЧ НАПЮГЖЮ BEGIN (ЯЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП. 100) ДКЪ ОЕВЮРХ ГЮЦНКНБЙНБ НДХМ ПЮГ: awk 'BEGIN - print "Month Crates" print "----- ------" "" - print $1, $2 ""' inventory-shipped бШ СФЕ ДНЦЮДЮКХЯЭ, ВРН ОНКСВХРЯЪ? оПХ ХЯОНКМЕМХХ ОПНЦПЮЛЛЮ МЮОЕВЮРЮЕР ЯКЕДСЧЫЕЕ: Month Crates ----- ------ Jan 13 Feb 15 Mar 15... гЮЦНКНБЙХ Х РЮАКХВМШЕ ДЮММШЕ МЕ БШПЮБМХБЮЧРЯЪ! лНФМН ХЯОПЮБХРЭ ЩРН, ОЕВЮРЮЪ МЕЯЙНКЭЙН ОПНАЕКНБ ЛЕФДС ОНКЪЛХ: awk 'BEGIN - print "Month Crates" print "----- ------" "" - print $1, " ", $2 ""' inventory-shipped мЕРПСДМН ЯЕАЕ ОПЕДЯРЮБХРЭ, ВРН ЩРНР ОСРЭ НЙЮФЕРЯЪ ЯКНФМШЛ, ЕЯКХ ХЯОНКЭГСЕРЯЪ ЛМНЦН ЯРНКАЖНБ. оНДЯВЕР ОПНАЕКНБ ДКЪ ДБСУ ХКХ РПЕУ ДНБНКЭМН ОПНЯР, МН ЕЯКХ ХУ АНКЭЬЕ, БШ ЛНФЕРЕ ЯАХРЭЯЪ Б ОНДЯВЕРЕ. дКЪ РЮЙХУ ЖЕКЕИ АШК ЯНГДЮМ НОЕПЮРНП printf (ЯЛ. ПЮГДЕК 6.5 [хЯОНКЭГНБЮМХЕ НОЕПЮРНПНБ printf ДКЪ ДЕЙНПЮРХБМНИ ОЕВЮРХ], ЯРП. 64); НДМН ХГ ЕЦН МЮГМЮВЕМХИ ЯНЯРНХР Б БШПЮБМХБЮМХХ ЯРНКАЖНБ ДЮММШУ. гЮЛЕРХЛ, ВРН ЛНФМН ОПНДНКФЮРЭ НОЕПЮРНПШ print ХКХ printf, ХЯОНКЭГСЪ newline ОНЯКЕ КЧАНИ ГЮОЪРНИ (ЯЛ. ПЮГДЕК 2.6 [awk-НОЕПЮРНПШ Х ЯРПНЙХ], ЯРП. 17). 6.3 пЮГДЕКХРЕКХ БШУНДЮйЮЙ СФЕ ЦНБНПХКНЯЭ, НОЕПЮРНПШ ОЕВЮРХ ЯНДЕПФЮР ЯОХЯЙХ ЮПЦСЛЕМРНБ, ПЮГДЕКЕММШУ ГЮОЪРШЛХ. мЮ ОЕВЮРХ НАПЮГШ ЮПЦСЛЕМРНБ МНПЛЮКЭМН ПЮГДЕКЪЧРЯЪ НДХМНВМШЛХ ОПНАЕКЮЛХ. мН ЩРН МЕ НАЪГЮРЕКЭМН РЮЙ, Ю РНКЭЙН ОН СЛНКВЮМХЧ. лНФМН СЙЮГШБЮРЭ КЧАСЧ ЖЕОНВЙС ЯХЛБНКНБ ДКЪ ХЯОНКЭГНБЮМХЪ Б ЙЮВЕЯРБЕ ПЮГДЕКХРЕКЪ ОНКЕИ МЮ БШУНДЕ Я ОНЛНЫЭЧ БЯРПНЕММНИ ОЕПЕЛЕММНИ OFS. мЮВЮКЭМНЕ ГМЮВЕМХЕ ЩРНИ ОЕПЕЛЕММНИ ЕЯРЭ ЖЕОНВЙЮ " ", Р.Е. НДХМ ОПНАЕК. пЕГСКЭРЮР НРДЕКЭМНЦН НОЕПЮРНПЮ ОЕВЮРХ МЮГШБЮЕРЯЪ БШУНДМНИ ГЮОХЯЭЧ. йЮФДШИ НОЕПЮРНП ОЕВЮРХ БШДЮЕР НДМС БШУНДМСЧ ГЮОХЯЭ, Ю ГЮРЕЛ БШДЮЕР ЖЕОНВЙС, МЮГШБЮЕЛСЧ ПЮГДЕКХРЕКЕЛ БШУНДМШУ ГЮОХЯЕИ. бЯРПНЕММЮЪ ОЕПЕЛЕММЮЪ ORS СЙЮГШБЮЕР ЩРС ЖЕОНВЙС. еЕ МЮВЮКЭМНЕ ГМЮВЕМХЕ ЕЯРЭ ""n", Р.e. ЯХЛБНК newline; РЮЙХЛ НАПЮГНЛ, МНПЛЮКЭМН ЙЮФДШИ НОЕПЮРНП ОЕВЮРХ БШДЮЕР НРДЕКЭМСЧ ЯРПНЙС. лНФМН ХГЛЕМЪРЭ ПЮГДЕКХРЕКХ БШУНДМШУ ОНКЕИ Х ГЮОХЯЕИ ОПХЯБЮХБЮМХЕЛ МНБШУ ГМЮВЕМХИ ОЕПЕЛЕММШЛ OFS Х/ХКХ ORS. нАШВМНЕ ЛЕЯРН ДЕКЮРЭ ЩРН ЕЯРЭ ОПЮБХКН BEGIN (ЯЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП. 100), Р.Е. ДН НАПЮАНРЙХ КЧАНЦН БУНДЮ. лНФМН РЮЙФЕ ДЕКЮРЭ ЩРН ОПХЯБЮХБЮМХЕЛ Б ЙНЛЮМДМНИ ЯРПНЙЕ, ОЕПЕД ХЛЕМЮЛХ БУНДМШУ ТЮИКНБ, ХКХ Я ОНЛНЫЭЧ ОЮПЮЛЕРПЮ ЙНЛЮМДМНИ ЯРПНЙХ `-v' (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161). яКЕДСЧЫХИ ОПХЛЕП ОЕВЮРЮЕР ОЕПБНЕ Х БРНПНЕ ОНКЪ ЙЮФДНИ БУНДМНИ ГЮОХЯХ, ПЮГДЕКЕММШЕ РНВЙНИ Я ГЮОЪРНИ Х ДНАЮБКЪЕР ОСЯРСЧ ЯРПНЙС ОНЯКЕ ЙЮФДНИ ОЕВЮРЮЕЛНИ ЯРПНЙХ: $ awk 'BEGIN - OFS = ";"; ORS = ""n"n" "" ? - print $1, $2 ""' BBS-list a aardvark;555-5553 a alpo-net;555-3412 a barfly;555-7685... сЯКХ ГМЮВЕМХЕ ORS МЕ ЯНДЕПФХР newline, БЕЯЭ БШУНД ОНИДЕР Б НДМС ЯРПНЙС, ЕЯКХ БШ МЕ БЯРЮБХРЕ newline ЙЮЙХЛ-МХАСДЭ ДПСЦХЛ ОСРЕЛ. 6.4 сОПЮБКЕМХЕ ОЕВЮРЭЧ ВХЯКЕММНЦН БШБНДЮеЯКХ ХЯОНКЭГСЕРЕ НОЕПЮРНП print ДКЪ ОЕВЮРХ ВХЯКНБШУ ГМЮВЕМХИ, awk БМСРПХ ЯЕАЪ ОПЕБПЮЫЮЕР ВХЯКН Б ЖЕОНВЙС ЯХЛБНКНБ Х ОЕВЮРЮЕР ЩРС ЖЕОНВЙС. awk ХЯОНКЭГСЕР ДКЪ ЩРНЦН ТСМЙЖХЧ sprintf (ЯЛ. ПЮГДЕК 12.3 [бЯРПНЕММШЕ ТСМЙЖХХ ДКЪ ДЕИЯРБХИ ЯН ЯРПНЙЮЛХ], ЯРП. 137). б МЮЯРНЪЫХИ ЛНЛЕМР ДНЯРЮРНВМН ЯЙЮГЮРЭ, ВРН sprintf БНЯОПХМХЛЮЕР СЙЮГЮМХЪ ТНПЛЮРЮ Н ТНПЛЕ ВХЯКЮ (ХКХ ЖЕОНВЙХ), Х ВРН ХЛЕЕРЯЪ ЛМНЦН БХДНБ ТНПЛЮРХПНБЮМХЪ ВХЯЕК. пЮГКХВМШЕ ЯОЕЖХТХЙЮЖХХ ТНПЛЮРНБ ОНДПНАМН НАЯСФДЮЧРЯЪ Б ПЮГДЕКЕ 6.5.2 [аСЙБШ, СОПЮБКЪЧЫХЕ ТНПЛЮРНЛ], ЯРП. 65. бЯРПНЕММЮЪ ОЕПЕЛЕММЮЪ OFMT ЯНДЕПФХР ЯОЕЖХТХЙЮЖХЧ ТНПЛЮРЮ ОН СЛНКВЮМХЧ, ЙНРНПСЧ print ХЯОНКЭГСЕР Я sprintf ОПХ ОПЕБПЮЫЕМХХ ВХЯКЮ Б ЖЕОНВЙС ЯХЛБНКНБ ДКЪ ОЕВЮРХ. щРН ГМЮВЕМХЕ OFMT ЕЯРЭ "%.6g". хЯОНКЭГСЪ ПЮГКХВМШЕ ГМЮВЕМХЪ OFMT Б ЙЮВЕЯРБЕ ЯОЕЖХТХЙЮЖХИ ТНПЛЮРЮ, ЛНФМН ЛЕМЪРЭ ТНПЛС ВХЯЕК, ОЕВЮРЮЕЛШУ НОЕПЮРНПНЛ print. бНР ЙНПНРЙХИ ОПХЛЕП: $ awk 'BEGIN - ? OFMT = "%.0f" # ОЕВЮРЮЕР ВХЯКЮ ЙЮЙ ЖЕКШЕ (НЙПСЦКЕММШЕ) ? print 17.23 ""' a 17 яННРБЕРЯРБЕММН ЯРЮМДЮПРС POSIX, ДЕИЯРБХЪ awk ЯРЮМНБЪРЯЪ МЕНОПЕДЕКЕММШЛХ, ЕЯКХ OFMT ЯНДЕПФХР ВРН-МХАСДЭ ЙПНЛЕ ЯОЕЖХТХЙЮЖХИ ОПЕНАПЮГНБЮМХЪ ВХЯЕК Я ОКЮБЮЧЫЕИ ГЮОЪРНИ (d.c.). 6.5 хЯОНКЭГНБЮМХЕ НОЕПЮРНПНБ printf ДКЪ ДЕЙНПЮРХБМНИ ОЕВЮРХеЯКХ МЕНАУНДХЛ АНКЕЕ ОНКМШИ ЙНМРПНКЭ ГЮ ТНПЛЮРНЛ ОЕВЮРХ, ЙНРНПШИ НАЕЯОЕВХБЮЕР print, ХЯОНКЭГСИРЕ printf. я ЕЦН ОНЛНЫЭЧ ЛНФМН СЙЮГШБЮРЭ ЬХПХМС ОЕВЮРХ ЙЮФДНЦН ЮПЦСЛЕМРЮ Х ПЮГКХВМШЕ ТНПЛЮРШ ДКЪ ВХЯЕК (РЮЙХЕ ЙЮЙ НЯМНБЮМХЕ ЯХЯРЕЛШ ЯВХЯКЕМХЪ, ОЕВЮРЮРЭ КХ ЩЙЯОНМЕМРС, ГМЮЙ Х ЯЙНКЭЙН ЖХТП ОНЯКЕ ДЕЯЪРХВМНИ РНВЙХ). щРН ДЕКЮЕРЯЪ Я ОНЛНЫЭЧ ЖЕОНВЙХ, МЮГШБЮЕЛНИ ТНПЛЮРМНИ ЖЕОНВЙНИ, ЙНРНПЮЪ НОПЕДЕКЪЕР, ЙЮЙ Х ЦДЕ ОЕВЮРЮРЭ ДПСЦХЕ ЮПЦСЛЕМРШ. 6.5.1 бБЕДЕМХЕ Б НОХЯЮМХЕ НОЕПЮРНПЮ printfнОЕПЮРНП printf ХЛЕЕР ЯКЕДСЧЫСЧ ТНПЛС: printf ТНПЛЮР, ЮПЦСЛЕМР1, ЮПЦСЛЕМР2, ... бЕЯЭ ЯОХЯНЙ ЮПЦСЛЕМРНБ ЛНФМН ГЮЙКЧВЮРЭ Б ЯЙНАЙХ. яЙНАЙХ МЕНАУНДХЛШ, ЕЯКХ Б Б БШПЮФЕМХЪУ ЙЮЙНЦН-МХАСДЭ ЮПЦСЛЕМРЮ ХЯОНКЭГНБЮМ ГМЮЙ `?' НОЕПЮРНПЮ НРМНЬЕМХЪ, РЮЙ ЙЮЙ ХМЮВЕ НМ ЛНФЕР АШРЭ ЯОСРЮМ Я ОЕПЕМЮОПЮБКЕМХЕЛ (ЯЛ. ПЮГДЕК 6.6 [оЕПЕМЮОПЮБКЕМХЕ БШУНДЮ print Х printf], ЯРП. 70). пЮГМХЖЮ ЛЕФДС printf Х print ЯНЯРНХР Б ЮПЦСЛЕМРЕ format. нМ ОПЕДЯРЮБКЪЕР БШПЮФЕМХЕ, ГМЮВЕМХЕЛ ЙНРНПНЦН ЪБКЪЕРЯЪ ЖЕОНВЙЮ; НМЮ НОПЕДЕКЪЕР ТНПЛС БШБНДЮ ЙЮФДНЦН ХГ НЯРЮКЭМШУ ЮПЦСЛЕМРНБ Х МЮГШБЮЕРЯЪ ТНПЛЮРМНИ ЯРПНЙНИ. щРЮ ЖЕОНВЙЮ НВЕМЭ ОНУНФЮ МЮ ТНПЛЮРМСЧ ЯРПНЙС ТСМЙЖХХ printf Б АХАКХНРЕЙЕ ANSI C. аНКЭЬЮЪ ВЮЯРЭ ТНПЛЮРМНЦН РЕЙЯРЮ АЕГ ХГЛЕМЕМХИ ОНЯРСОЮЕР МЮ БШБНД. б МЕЛ ЯНДЕПФЮРЯЪ РЮЙФЕ ВЮЯРХ, ЯОЕЖХТХЖХПСЧЫХЕ ТНПЛЮР, ОН НДМНИ МЮ ЙЮФДШИ ЮПЦСЛЕМР. йЮФДШИ ЯОЕЖХТХЙЮРНП ТНПЛЮРЮ ОПЕДОХЯШБЮЕР ОНЛЕЯРХРЭ БШБНД ЯКЕДСЧЫЕЦН ЮПЦСЛЕМРЮ ХГ ЯОХЯЙЮ ЮПЦСЛЕМРНБ Б ЯННРБЕРЯРБСЧЫЕЛ ЕЛС ЛЕЯРЕ ТНПЛЮРМНЦН РЕЙЯРЮ. нОЕПЮРНП printf МЕ ГЮБЕПЬЮЕР ЮБРНЛЮРХВЕЯЙХ БШБНД ОЕПЕУНДНЛ Й МНБНИ ЯРПНЙЕ. нМ БШДЮЕР РНКЭЙН РН, ВРН СЙЮГЮМН Б ТНПЛЮРМНИ ЯРПНЙЕ. рЮЙ ВРН ЕЯКХ БШ УНРХРЕ ОЕПЕИРХ Й МНБНИ ЯРПНЙЕ, БШ ДНКФМШ СЙЮГЮРЭ ЩРН Б ТНПЛЮРМНИ ЯРПНЙЕ. оЕПЕЛЕММШЕ ПЮГДЕКХРЕКЕИ БШБНДЮ OFS Х ORS МЕ ДЕИЯРБСЧР МЮ НОЕПЮРНПШ printf. мЮОПХЛЕП: BEGIN - ORS = ""nOUCH!"n"; OFS = "!" msg = "Don't Panic!"; printf "%s"n", msg "" щРЮ ОПНЦПЮЛЛЮ БЯЕ РЮЙ ФЕ ОЕВЮРЮЕР ГМЮЙНЛШИ ЯНБЕР `Don't Panic!'. 6.5.2 аСЙБШ СОПЮБКЕМХЪ ТНПЛЮРНЛяОЕЖХТХЙЮРНП ТНПЛЮРЮ МЮВХМЮЕРЯЪ Я ЯХЛБНКЮ `%' Х ЙНМВЮЕРЯЪ АСЙБНИ СОПЮБКЕМХЪ ТНПЛЮРНЛ; НМЮ ЯННАЫЮЕР НОЕПЮРНПС printf, ЙЮЙ БШБНДХРЭ ЮПЦСЛЕМР. (еЯКХ БШ ТЮЙРХВЕЯЙХ УНРХРЕ БШБЕЯРХ `%', ОХЬХРЕ `%%'.) аСЙБЮ СОПЮБКЕМХЪ ТНПЛЮРНЛ СЙЮГШБЮЕР, ЙЮЙНИ БХД ГМЮВЕМХЪ ОЕВЮРЮРЭ. нЯРЮКЭМЮЪ ВЮЯРЭ ЯОЕЖХТХЙЮРНПЮ ТНПЛЮРЮ ЯНЯРНХР ХГ БШАНПНВМШУ ЛНДХТХЙЮРНПНБ, ЯКСФЮЫХУ ОЮПЮЛЕРПЮЛХ ДЕИЯРБХЪ, РЮЙХЛХ ЙЮЙ ЬХПХМЮ ОНКЪ. оПХБЕДЕЛ ЯОХЯНЙ АСЙБ СОПЮБКЕМХЪ ТНПЛЮРНЛ: c оЕВЮРЮЕР ВХЯКН Б БХДЕ НДМНЦН ЯХЛБНКЮ ASCII. рЮЙ, `printf "%c", 65' БШБНДХР АСЙБС `A'. бШБНДНЛ ЯРПНЙНБНЦН ГМЮВЕМХЪ АСДЕР ОЕПБШИ ЯХЛБНК ЖЕОНВЙХ. d Х i ЩЙБХБЮКЕМРМШ. нАЕ ОЕВЮРЮЧР ДЕЯЪРХВМНЕ ЖЕКНЕ. яОЕЖХТХЙЮЖХЪ `%i' ББЕДЕМЮ ДКЪ ЯНБЛЕЯРХЛНЯРХ Я ANSI C. e ХКХ E НГМЮВЮЧР ВХЯКН Б МЮСВМНИ (ЩЙЯОНМЕМЖХЮКЭМНИ) ТНПЛЕ. мЮОПХЛЕП, printf "%4.3e"n", 1950 МЮОЕВЮРЮЕР `1.950e+03', Я ВЕРШПЭЛЪ ГМЮВЮЫХЛХ ЖХТПЮЛХ, ХГ ЙНРНПШУ РПХ ПЮЯОНКНФЕМШ ОНЯКЕ ДЕЯЪРХВМНИ РНВЙХ. `4.3' ОПЕДЯРЮБКЪЧР ЛНДХТХЙЮРНПШ, НАЯСФДЮЕЛШЕ МХФЕ. `%E' ХЯОНКЭГСЕР `E' БЛЕЯРН `e' Б ОЕВЮРЮЕЛНЛ ПЕГСКЭРЮРЕ. f НГМЮВЮЕР ОЕВЮРЭ ВХЯКЮ Я ОКЮБЮЧЫЕИ РНВЙНИ. мЮОПХЛЕП, printf "%4.3f", 1950 БШДЮЕР `1950.000', Я ВЕРШПЭЛЪ ГМЮВЮЫХЛХ ЖХТПЮЛХ, РПХ ХГ ЙНРНПШУ ЯКЕДСЧР ГЮ ДЕЯЪРХВМНИ РНВЙНИ. `4.3' ЕЯРЭ ЛНДХТХЙЮРНПШ, НАЯСФДЮЕЛШЕ МХФЕ. g G НГМЮВЮЕР ОЕВЮРЭ ВХЯКЮ Б ЩЙЯОНМЕМЖХЮКЭМНИ ТНПЛЕ ХКХ Я ОКЮБЮЧЫЕИ РНВЙНИ, БШАХПЮЪ РС, ЙНРНПЮЪ ЯНДЕПФХР ЛЕМЭЬЕ ЯХЛБНКНБ. еЯКХ ПЕГСКЭРЮР ОЕВЮРЮЕРЯЪ Б ЩЙЯОНМЕМЖХЮКЭМНИ ТНПЛЕ, `%G' ХЯОНКЭГСЕР `E' БЛЕЯРН `e'. o НГМЮВЮЕР ОЕВЮРЭ БНЯЭЛЕПХВМНЦН ЖЕКНЦН АЕГ ГМЮЙЮ. (б ЩРНИ ТНПЛЕ Я НЯМНБЮМХЕЛ БНЯЕЛЭ ХЯОНКЭГСЧРЯЪ ЖХТПШ НР `0' ДН `7'; ДЕЯЪРХВМНЕ ВХЯКН БНЯЕЛЭ ОПЕДЯРЮБКЪЕРЯЪ ЙЮ БНЯЭЛЕПХВМНЕ `10'.) s НГМЮВЮЕР ОЕВЮРЭ ЖЕОНВЙХ. x X НГМЮВЮЕР ОЕВЮРЭ ЬЕЯРМЮДЖЮРЕПХВМШУ ЖЕКШУ АЕГ ГМЮЙЮ. (б ЬЕЯРМЮДЖЮРЕПХВМНИ ТНПЛЕ Я НЯМНБЮМХЕЛ 16 ЖХТПЮЛХ ЯКСФЮР ЖХТПШ НР `0' ДН `9' Х АСЙБШ НР `a' ДН `f'. ьЕЯРМЮДЖЮРЕПХВМЮЪ ЖХТПЮ `f' ОПЕДЯРЮБКЪЕР ДЕЯЪРХВМНЕ ВХЯКН 15.) `%X' ОПЕДОХЯШБЮЕР ХЯОНКЭГНБЮРЭ АСЙБШ НР `A' ДН `F' БЛЕЯРН АСЙБ НР `a' ДН `f'. % ЩРНР ЯХЛБНК Б ДЕИЯРБХРЕКЭМНЯРХ МЕ ЕЯРЭ АСЙБЮ СОПЮБКЕМХЪ ТНПЛЮРНЛ, МН ХЛЕЕР НЯНАШИ ЯЛШЯК ОПХ ХЯОНКЭГНБЮМХХ ОНЯКЕ `%': ОНЯКЕДНБЮРЕКЭМНЯРЭ `%%' БШДЮЕР НДХМ `%'. нМ МЕ ХЯОНКЭГСЕР ЮПЦСЛЕМР Х ХЦМНПХПСЕР БЯЪЙХЕ ЛНДХТХЙЮРНПШ. оПХ ХЯОНКЭГНБЮМХХ АСЙБ, СОПЮБКЪЧЫХУ ТНПЛЮРНЛ ЖЕКШУ ВХЯЕК, ДКЪ ВХЯЕК, БШУНДЪЫХУ ГЮ ОПЕДЕКШ, СЯРЮМНБКЕММШЕ ДКЪ ЖЕКШУ РХОЮ C long, gawk ОЕПЕЙКЧВЮЕРЯЪ МЮ ТНПЛЮР `%g'. дПСЦХЕ БЕПЯХХ awk ЛНЦСР ОЕВЮРЮРЭ МЕОПЮБХКЭМШЕ ГМЮВЕМХЪ ХКХ ОПЕДОПХМХЛЮРЭ ЯНБЕПЬЕММН ХМШЕ ДЕИЯРБХЪ (d.c.). 6.5.3 лНДХТХЙЮРНПШ Б ТНПЛЮРЮУ ДКЪ printfяОЕЖХТХЙЮРНП ТНПЛЮРЮ ЛНФЕР БЙКЧВЮРЭ Б ЯЕАЪ ЛНДХТХЙЮРНПШ, НОПЕДЕКЪЧЫХЕ, ЙЮЙЮЪ ОНПЖХЪ ГМЮВЕМХЪ ЮПЦСЛЕМРЮ ОЕВЮРЮЕРЯЪ Х ЯЙНКЭЙН ЛЕЯРЮ ОНКСВЮЕР. лНДХТХЙЮРНПШ ПЮЯОНКЮЦЮЧРЯЪ ЛЕФДС `%' Х СОПЮБКЪЧЫЕИ ТНПЛЮРНЛ АСЙБНИ. б ЯКЕДСЧЫХУ МХФЕ ОПХЛЕПЮУ ЛШ ХЯОНКЭГСЕЛ ЛЮПЙЕП "ffl" ДКЪ ОПЕДЯРЮБКЕМХЪ ОПНАЕКНБ Б БШБНДЕ. оПХБЕДЕЛ БНГЛНФМШЕ ЛНДХТХЙЮРНПШ Б ОНПЪДЙЕ, Б ЙНРНПНЛ НМХ ЛНЦСР ОНЪБХРЭЯЪ: - гМЮЙ ЛХМСЯЮ, ХЯОНКЭГСЕРЯЪ ОЕПЕД ЛНДХТХЙЮРНПНЛ ЬХПХМШ (ЯЛ. МХФЕ), РПЕАСЕР БШПЮБМХБЮМХЪ ЮПЦСЛЕМРЮ ОН КЕБНЛС ЙПЮЧ ОНКЪ СЙЮГЮММНИ ЬХПХМШ. мНПЛЮКЭМН ЮПЦСЛЕМР БШПЮБМХБЮЕРЯЪ ОН ОПЮБНЛС ЙПЮЧ. рЮЙ, printf "%-4s", "foo" ОЕВЮРЮЕР `fooffl'. ОПНАЕК оПХ БШДЮВЕ ВХЯЕК ОПЕДБЮПЪЕР ОПНАЕКНЛ ОНКНФХРЕКЭМШЕ ГМЮВЕМХЪ Х ЛХМСЯНЛ НРПХЖЮРЕКЭМШЕ. + гМЮЙ ОКЧЯЮ ОХЬЕРЯЪ ОЕПЕД ЛНДХТХЙЮРНПНЛ ЬХПХМШ (ЯЛ. МХФЕ), РПЕАСЕР БЯЕЦДЮ ЯРЮБХРЭ ГМЮЙ ВХЯКЮ БН БЯЕУ ЯКСВЮЪУ. `+' ОНДЮБКЪЕР ЛНДХТХЙЮРНП ОПНАЕК. # нГМЮВЮЕР "ЮКЭРЕПМЮРХБМСЧ ТНПЛС" ДКЪ МЕЙНРНПШУ СОПЮБКЪЧЫХУ АСЙБ. дКЪ `%o' РПЕАСЕР ДНАЮБХРЭ БЕДСЫХИ МНКЭ. дКЪ For `%x' Х `%X' ДНАЮБХРЭ БЕДСЫХИ `0x' ХКХ`0X' Б ЯКСВЮЕ МЕМСКЕБНЦН ПЕГСКЭРЮРЮ. дКЪ `%e', `%E'Х `%f' ПЕГСКЭРЮР БЯЕЦДЮ АСДЕР ХЛЕРЭ ДЕЯЪРХВМСЧ РНВЙС. оПХ `%g' Х `%G' ГЮБЕПЬЮЧЫХЕ МСКХ МЕ СДЮКЪЧРЯЪ ХГ ПЕГСКЭРЮРЮ. 0 бЕДСЫХИ `0' (МНКЭ) ДЕИЯРБСЕР ЙЮЙ ТКЮФНЙ, СЙЮГШБЮЧЫХИ, ВРН БШБНД ДНКФЕМ ГЮОНКМЪРЭЯЪ МСКЪЛХ БЛЕЯРН ОПНАЕКНБ. щРН ОПХЛЕМЪЕРЯЪ ДЮФЕ Й МЕВХЯКНБШЛ ТНПЛЮРЮЛ БШБНДЮ (d.c.). щРНР ТКЮФНЙ ДЕИЯРБСЕР РНКЭЙН РНЦДЮ, ЙНЦДЮ ЬХПХМЮ ОНКЪ АНКЭЬЕ ОЕВЮРЮЕЛНЦН ГМЮВЕМХЪ. ЬХПХМЮ щРН ВХЯКН, СЙЮГШБЮЧЫЕЕ ФЕКЮЕЛСЧ ЛХМХЛЮКЭМСЧ ЬХПХМС ОНКЪ. оНЛЕЫЕМХЕ КЧАНЦН ВХЯКЮ ЛЕФДС ГМЮЙНЛ `%' СОПЮБКЪЧЫХИ ТНПЛЮРНЛ АСЙБШ РПЕАСЕР ПЮЯЬХПЕМХЪ ОНКЪ ДН СЙЮГЮММНЦН ПЮГЛЕПЮ. яОНЯНА ЯДЕКЮРЭ ЩРН ОН СЛНКВЮМХЧ ЯНЯРНХР Б ГЮОНКМЕМХХ ОНКЪ ОПНАЕКЮЛХ ЯКЕБЮ. мЮОПХЛЕП, printf "%4s", "foo" ОЕВЮРЮЕР `fflfoo'. гМЮВЕМХЕ ЬХПХМШ ЕЯРЭ ЛХМХЛЮКЭМЮЪ ЬХПХМЮ, Ю МЕ ЛЮЙЯХЛЮКЭМЮЪ. еЯКХ ГМЮВЕМХЕ ЮПЦСЛЕМРЮ РПЕАСЕР ГМЮЙНБ АНКЭЬЕ, ВЕЛ СЙЮГЮММЮЪ ЬХПХМЮ, ЬХПХМЮ СБЕКХВХБЮЕРЯЪ ДН МЕНАУНДХЛНИ. рЮЙ printf "%4s", "foobar" ОЕВЮРЮЕР `foobar'. сЙЮГЮМХЕ ГМЮЙЮ ЛХМСЯ ОЕПЕД ЬХПХМНИ ОПЕДОХЯШБЮЕР ОНОНКМЪРЭ БШБНД ОПНАЕКЮЛХ ЯОПЮБЮ, Ю МЕ ЯКЕБЮ. .prec (РНВМНЯРЭ) щРН ВХЯКН, ЙНРНПНЕ СЙЮГШБЮЕР РНВМНЯРЭ ОПХ ОЕВЮРХ. б ЯКСВЮЕ ТНПЛЮРНБ `e', `E' Х `f' НМН НГМЮВЮЕР ЙНКХВЕЯРБН ЖХТП, ЙНРНПШЕ БШ УНРХРЕ МЮОЕВЮРЮРЭ ЯОПЮБЮ НР ДЕЯЪРХВМНИ РНВЙХ. дКЪ ТНПЛЮРНБ `g' Х `G' НМН СЙЮГШБЮЕР ЛЮЙЯХЛЮКЭМНЕ ЙНКХВЕЯРБН ГМЮВЮЫХУ ЖХТП. дКЪ ТНПЛЮРНБ `d', `o', `i', `u', `x' Х `X' НМН СЙЮГШБЮЕР ЛХМХЛЮКЭМНЕ ЙНКХВЕЯРБН ОЕВЮРЮЕЛШУ ЖХТП. дКЪ ЖЕОНВЕЙ НМН СЙЮГШБЮЕР ЛЮЙЯХЛЮКЭМНЕ ЙНКХВЕЯРБН ГМЮЙНБ ХГ ЖЕОНВЙХ, ЙНРНПШЕ ДНКФМШ АШРЭ МЮОЕВЮРЮМШ. рЮЙХЛ НАПЮГНЛ, printf "%.4s", "foobar" ОЕВЮРЮЕР `foob'. оНДДЕПФХБЮЧРЯЪ РЮЙФЕ ДХМЮЛХВЕЯЙЮЪ ЬХПХМЮ Х ЯБНИЯРБН prec НОЕПЮРНПЮ printf ХГ АХАКХНРЕЙХ яХ (for example, "%*.*s"). бЛЕЯРН ЪБМНЦН СЙЮГЮМХЪ ЬХПХМШ Х/ХКХ ГМЮВЕМХИ prec Б ТНПЛЮРМНИ ЯРПНЙЕ ХУ ЛНФМН ОЕПЕДЮБЮРЭ Б ЯОХЯЙЕ ЮПЦСЛЕМРНБ. мЮОПХЛЕП: w = 5 p = 3 s = "abcdefg" printf "%*.*s"n", w, p, s Б РНВМНЯРХ ЩЙБХБЮКЕМРМН s = "abcdefg" printf "%5.3s"n", s нАЕ ОПНЦПЮЛЛШ МЮОЕВЮРЮЧР `fflfflabc'. пЮММХЕ БЕПЯХХ awk МЕ ХЛЕКХ ЩРНИ БНГЛНФМНЯРХ. еЯКХ БЮЛ ОПХУНДХРЯЪ ХЯОНКЭГНБЮРЭ РЮЙСЧ БЕПЯХЧ, ЛНФМН ЛНДЕКХПНБЮРЭ СОНЛЪМСРНЕ ЯБНИЯРБН, ХЯОНКЭГСЪ ЙНМЙЮРЕМЮЖХЧ ОПХ ОНЯРПНЕМХХ ТНПЛЮРМНИ ЯРПНЙХ, ОНДНАЕМ ЯКЕДСЧЫЕЛС: w = 5 p = 3 s = "abcdefg" printf "%" w "." p "s"n", s щРН МЕ НВЕМЭ КЕЦЙН ВХРЮРЭ, МН ЩРН ПЮАНРЮЕР. яХ-ОПНЦПЮЛЛХЯРШ ЛНЦКХ ОПХБШЙМСРЭ СОНРПЕАКЪРЭ ДНОНКМХРЕКЭМШЕ ТКЮФЙХ `l' Х `h' Б ТНПЛЮРМНИ ЯРПНЙЕ printf. мН НМХ НРЯСРЯРБСЧР Б awk. аНКЭЬХМЯРБН ПЕЮКХГЮЖХИ awk ЛНКВЮКХБН ХЦМНПХПСЧР ЩРХ ТКЮФЙХ. еЯКХ `--lint' СЙЮГЮМН Б ЙНЛЮМДМНИ ЯРПНЙЕ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161), gawk ОПЕДНЯРЕПЕФЕР НР ХУ ХЯОНКЭГНБЮМХЪ. еЯКХ СЙЮГЮМН `--posix', ХУ ХЯОНКЭГНБЮМХЕ ОПХБЕДЕР Й ТЮРЮКЭМНИ НЬХАЙЕ. 6.5.4 оПХЛЕПШ СОНРПЕАКЕМХЪ printfawk '- printf "%-10s %s"n", $1, $2 ""' BBS-list ОЕВЮРЮЕР ХЛЕМЮ ДНЯНЙ НАЗЪБКЕМХИ ($1) ХГ ТЮИКЮ `BBS-list' Б БХДЕ ЖЕОНВЙХ 10 ЯХЛБНКНБ, БШПНБМЕММНИ ОН КЕБНЛС ЙПЮЧ. нМЮ РЮЙФЕ ОЕВЮРЮЕР РЕКЕТНММШЕ МНЛЕПЮ ($2) ДЮКЭЬЕ Б ЯРПНЙЕ. щРН НТНПЛКЪЕРЯЪ Б БХДЕ БШПНБМЕММНИ ДБСУ-ЯРНКАЖНБНИ РЮАКХЖШ ХЛЕМ Х РЕКЕТНММШУ МНЛЕПНБ: $ awk '- printf "%-10s %s"n", $1, $2 ""' BBS-list a aardvark 555-5553 a alpo-net 555-3412 a barfly 555-7685 a bites 555-1675 a camelot 555-0542 a core 555-2912 a fooey 555-1234 a foot 555-6699 a macfoo 555-6480 a sdace 555-3430 a sabafoo 555-2127 гЮЛЕРХКХ КХ БШ, ВРН ЛШ МЕ СЙЮГШБЮКХ, ВРНАШ РЕКЕТНММШЕ МНЛЕПЮ ОЕВЮРЮКХЯЭ ЙЮЙ ВХЯКЮ? нМХ ДНКФМШ ОЕВЮРЮРЭЯЪ ЙЮЙ ЖЕОНВЙХ, ОНРНЛС ВРН ПЮГДЕКЕМШ ГМЮЙНЛ ДЕТХЯЮ еЯКХ АШ ЛШ ОШРЮКХЯЭ МЮОЕВЮРЮРЭ РЕКЕТНММШЕ МНЛЕПЮ ЙЮЙ ВХЯКЮ, БЯЕ ВРН ЛШ ЛНЦКХ АШ ОНКСВХРЭ, АШКН РПЕЛЪ ОЕПБШЛХ ЖХТПЮЛХ, `555'. щРН АШКН АШ НВЕМЭ ОКНУН. лШ МЕ СЙЮГШБЮКХ ЬХПХМС РЕКЕТНММШУ МНЛЕПНБ, ОНРНЛС ВРН НМХ ПЮЯОНКЮЦЮЧРЯЪ Б ЙНМЖЮУ ЯБНХУ ЯРПНЙ. оНЯКЕ МХУ МЕ МСФМН ПЮЯОНКЮЦЮРЭ ОПНАЕКШ. лШ ЛНЦКХ АШ ЯДЕКЮРЭ МЮЬС РЮАКХЖС ЙПЮЯХБЕЕ, ДНАЮБХБ ГЮЦНКНБЙХ ББЕПУС ЙНКНМНЙ. вРНАШ ЯДЕКЮРЭ ЩРН, ХЯОНКЭГСЕЛ НАПЮГЕЖ BEGIN (ЯЛ. ПЮГДЕК 8.1.5 [яОЕЖХЮКЭМШЕ НАПЮГЖШ BEGIN Х END], ЯРП.100), ВРНАШ ГЮЦНКНБНЙ МЮОЕВЮРЮКЯЪ РНКЭЙН НДХМ ПЮГ, Б МЮВЮКЕ awk-ОПНЦПЮЛЛШ: awk 'BEGIN - print "Name Number" print "---- ------" "" - printf "%-10s %s"n", $1, $2 ""' BBS-list б ЩРНЛ ОПХЛЕПЕ ЛШ ЯЛЕЬЮКХ НОЕПЕРНПШ print Х printf. лШ ЛНЦКХ СОНРПЕАХРЭ РНКЭЙН НОЕПЮРНПШ printf ДКЪ ОНКСВЕМХЪ РНЦН ФЕ ПЕГСКЭРЮРЮ: awk 'BEGIN - printf "%-10s %s"n", "Name", "Number" printf "%-10s %s"n", "----", "------" "" - printf "%-10s %s"n", $1, $2 ""' BBS-list оЕВЮРЮЪ ГЮЦНКНБНЙ ЙЮФДНИ ЙНКНМЙХ Я РЕЛХ ФЕ ЯОЕЖХТХЙЮЖХЪЛХ ТНПЛЮРЮ, ЙНРНПШЕ ХЯОНКЭГНБЮКХЯЭ ДКЪ ЩКЕЛЕМРНБ ЯРНКАЖЮ, ЛШ НАЕЯОЕВХКХ БШПЮБМХБЮМХЕ ГЮЦНКНБЙНБ РЮЙ ФЕ ЙЮЙ Х ЯРНКАЖНБ. тЮЙР, ВРН РЮ ФЕ ЯОЕЖХТХЙЮЖХЪ ТНПЛЮРЮ ХЯОНКЭГСЕРЯЪ РПХ ПЮГЮ, ЛНФЕР АШРЭ ОНДВЕПЙМСР ОНЛЕЫЕМХЕЛ ЕЕ Б ОЕПЕЛЕММСЧ, ОНДНАМН ЯКЕДСЧЫЕЛС: awk 'BEGIN - format = "%-10s %s"n" printf format, "Name", "Number" printf format, "----", "------" "" - printf format, $1, $2 ""' BBS-list оНОПНАСИРЕ Я ОНЛНЫЭЧ printf ПЮЯОНКНФХРЭ Б НДНИ КХМХХ ГЮЦНКНБЙХ Х РЮАКХВМШЕ ДЮММШЕ ДКЪ МЮЬЕИ `inventory-shipped', ПЮЯЯЛНРПЕММНИ ПЮМЕЕ Б ПЮГДЕКЕ НА НОЕПЮРНПЕ print (ЯЛ. ПЮГДЕК 6.1 [нОЕПЮРНП print], ЯРП. 61). 6.6 оЕПЕМЮОПЮБКЕМХЕ БШБНДЮ НР print Х printfдН ЯХУ ОНП ЛШ ХЛЕКХ ДЕКН Я БШУНДНЛ НР ОЕВЮРХ РНКЭЙН МЮ ЯРЮМДЮПРМНЕ СЯРПНИЯРБН, НАШВМН МЮ РЕПЛХМЮК. х print Х printf ЛНЦСР РЮЙФЕ ОНЯШКЮРЭ ПЕГСКЭРЮРШ ЯБНЕИ ПЮАНРШ Б ДПСЦХЕ ЛЕЯРЮ. щРН МЮГШБЮЕРЯЪ ОЕПЕМЮОПЮБКЕМХЕЛ. оЕПЕМЮОПЮБКЕМХЕ ЯРЮБХРЯЪ ОНЯКЕ НОЕПЮРНПНБ print ХКХ printf. оЕПЕМЮОПЮБКЕМХЕ Б awk ГЮОХЯШБЮЕРЯЪ РНВМН РЮЙ ФЕ ЙЮЙ Х Б ЙНЛЮМДЮУ НАНКНВЙХ, РНКЭЙН НМХ ОХЬСРЯЪ БМСРПХ awk-ОПНЦПЮЛЛШ. хЛЕЧРЯЪ РПХ ТНПЛШ ОЕПЕМЮОПЮБКЕМХЪ: Б ТЮИК, Б ЙНМЕЖ ТЮИКЮ, Х Б БШБНД ОН ЙНМБЕИЕПС Б ДПСЦСЧ ЙНЛЮМДС. лШ ОНЙЮФЕЛ ХУ ДКЪ НОЕПЮРНПЮ print, МН НМХ РНВМН РЮЙХЕ ФЕ Х ДКЪ printf. print items ? output-file щРНР РХО ОЕПЕМЮОПЮБКЕМХЪ ОЕВЮРЮЕР Б ТЮИКЕ Я ХЛЕМЕЛ output-file, ГЮДЮММНЛ КЧАШЛ БШПЮФЕМХЕЛ. еЦН ГМЮВЕМХЕ ОПЕНАПЮГСЕРЯЪ Б ЖЕОНВЙС Х ГЮРЕЛ ХЯОНКЭГСЕРЯЪ ЙЮЙ ХЛЪ ТЮИКЮ (ЯЛ. цКЮБС 7 [бШПЮФЕМХЪ], ЯРП. 77). йНЦДЮ ХЯОНКЭГСЕРЯЪ РЮЙНИ РХО ОЕПЕМЮОПЮБКЕМХЪ, БШУНДМНИ ТЮИК НВХЫЮЕРЯЪ ОЕПЕД БШБНДНЛ Б МЕЦН. бН БРНПНЛ ЯКСВЮЕ ПЕГСКЭРЮРШ ДНОХЯШБЮЧРЯЪ Б ЙНМЕЖ СЙЮГЮММНЦН ТЮИКЮ АЕГ ЕЦН ОПЕДБЮПХРЕКЭМНИ НВХЯРЙХ. еЯКХ ТЮИКЮ МЕ АШКН, НМ ЯНГДЮЕРЯЪ. бНР ОПХЛЕП РНЦН, ЙЮЙ awk-ОПНЦПЮЛЛЮ МЮОХЬЕР ЯОХЯНЙ ХЛЕМ BBS Б ТЮИК `name-list' Х ЯОХЯНЙ РЕКЕТНММШУ МНЛЕПНБ Б ТЮИК `phone-list'. йЮФДШИ БШУНДМНИ ТЮИК ЯНДЕПФХР ОН НДМНЛС ХЛЕМХ ХКХ МНЛЕПС Б ЙЮФДНИ ЯРПНЙЕ. $ awk '- print $2 ? "phone-list" ? print $1 ? "name-list" ""' BBS-list $ cat phone-list a 555-5553 a 555-3412... $ cat name-list a aardvark a alpo-net... print items ?? output-file щРНР РХО ОЕПЕМЮОПЮБКЕМХЪ БШДЮЕР ПЕГСКЭРЮРШ Б ЯСЫЕЯРБСЧЫХИ БШУНДМНИ ТЮИК Я ХЛЕМЕЛ output-file. пЮГМХЖЮ ЛЕФДС ЩРХЛ Х ОЕПЕМЮОПЮБКЕМХЕЛ Я НДМХЛ РНКЭЙН `?' ЯНЯРНХР Б РНЛ, ВРН ОПЕФМЕЕ ЯНДЕПФХЛНЕ ( ЕЯКХ НМН АШКН) БШУНДМНЦН ТЮИКЮ МЕ ЯРХПЮЕРЯЪ. бЛЕЯРН ЩРНЦН БШУНД НР awk ОПХОХЯШБЮЕРЯЪ Б ЙНМЕЖ ТЮИКЮ. еЯКХ ТЮИКЮ МЕ АШКН, НМ ЯНГДЮЕРЯЪ БМНБЭ. йНЛЮМДЮ print itemsлНФМН РЮЙФЕ ОНЯШКЮРЭ ПЕГСКЭРЮРШ ОЕВЮРХ БЛЕЯРН ТЮИКЮ Б ДПСЦСЧ ОПНЦПЮЛЛС ВЕПЕГ ЙНМБЕИЕП. щРНР РХО ОЕПЕМЮОПЮБКЕМХЪ НРЙПШБЮЕР ЙНМБЕИЕП ДКЪ ЙНЛЮМДШ Х ОЕПЕДЮЕР ГМЮВЕМХЪ ЮПЦСЛЕМРНБ ОН ЩРНЛС ЙНМБЕИЕПС ДПСЦНЛС ОПНЖЕЯЯС, ЯНГДЮММНЛС ДКЪ БШОНКМЕМХЪ ЙНЛЮМДШ. йНЛЮМДЮ ОЕПЕМЮОПЮБКЕМХЪ ЮПЦСЛЕМРЮ ТЮЙРХВЕЯЙХ ЪБКЪЕРЯЪ БШПЮФЕМХЕЛ awk. еЦН ГМЮВЕМХЕ ОПЕНАПЮГСЕРЯЪ Б ЖЕОНВЙС, ЯНДЕПФЮМХЕ ЙНРНПНИ ЯКСФХР ЙНЛЮМДНИ НАНКНВЙХ, ОНДКЕФЮЫЕИ ХЯОНКМЕМХЧ. мЮОПХЛЕП, ЯКЕДСЫЕЕ ОПНХГБНДХР ДБЮ ТЮИКЮ, НДХМ --- МЕЯНПРХПНБЮММШИ ЯОХЯНЙ ХЛЕМ BBS Х ДПСЦНИ --- ЯОХЯНЙ, НРЯНПРХПНБЮММШИ Б НАПЮРМНЛ ЮКТЮБХРМНЛ ОНПЪДЙЕ: awk '- print $1 ? "names.unsorted" command = "sort -r ? names.sorted" print $1 -- command ""' BBS-list гДЕЯЭ МЕ НРЯНПРХПНБЮММШИ ЯОХЯНЙ ОХЬЕРЯЪ Я НАШВМШЛ ОЕПЕМЮОПЮБКЕМХЕЛ, Ю НРЯНПРХПНБЮММШИ ГЮОХЯШБЮЕРЯЪ ОН ЙНМБЕИЕПС ВЕПЕГ СРХКХРС ЯНПРХПНБЙХ. яКЕДСЧЫХИ ОПХЛЕП ХЯОНКЭГСЕР ОЕПЕМЮОПЮБКЕМХЕ ДКЪ НРОПЮБЙХ ЯННАЫЕМХЪ Б ОНВРНБШИ ЯОХЯНЙ `bug-system'. щРН ЛНФЕР АШРЭ ОНКЕГМШЛ ОНДДЕПФЙХ ЯХЯРЕЛШ, ЕЯКХ НЬХАЙХ ВЮЯРН НАМЮПСФХБЮЧРЯЪ ОПХ ХЯОНКМЕМХХ ЯЖЕМЮПХЪ awk. report = "mail bug-system" print "Awk script failed:", $0 -- report m = ("at record number " FNR " of " FILENAME) print m -- report close(report) яННАЫЕМХЕ ЯРПНХРЯЪ Я ХЯОНКЭГНБЮМХЕЛ ЙНМЙЮРЕМЮЖХХ ЯРПНЙ Х ЯНУПЮМЪЕРЯЪ Б ОЕПЕЛЕММНИ m. гЮРЕЛ НМН ОНЯШКЮЕРЯЪ ВЕПЕГ ЙНМБЕИЕП Б ОНВРНБСЧ ОПНЦПЮЛЛС. лШ БШГШБЮЕЛ ТСМЙЖХЧ close, ОНРНЛС ВРН ОНКЕГМН ГЮЙПШБЮРЭ ЙНМБЕИЕП ЙЮЙ РНКЭЙН БЕЯЭ БШБНД ОНЯРСОХК Б МЕЦН. яЛ. ПЮГДЕК 6.8 [гЮЙПШРХЕ БУНДМШУ Х БШУНДМШУ ТЮИКНБ Х ЙНМБЕИЕПНБ], ЯРП. 74, ДКЪ ОНДПНАМНЦН НГМЮЙНЛКЕМХЪ. щРНР ОПХЛЕП РЮЙФЕ ХККЧЯРПХПСЕР ХЯОНКЭГНБЮМХЕ ОЕПЕЛЕММШУ ДКЪ ОПЕДЯРЮБКЕМХЪ ТЮИКНБ ХКХ ЙНЛЮМД: МЕНАЪГЮРЕКЭМН ХЯОНКЭГНБЮРЭ БЯЕЦДЮ ЯРПНЙНБШЕ ЙНМЯРЮМРШ. хЯОНКЭГНБЮМХЕ ОЕПЕЛЕММШУ ЪБКЪЕРЯЪ ОНКЕГМНИ ХДЕЕИ, РЮЙ ЙЮЙ awk РПЕАСЕР, ВРНАШ БЯЕЦДЮ ЯРПНЙНБШЕ ГМЮВЕМХЪ НДХМЮЙНБН ГЮОХЯШБЮКХЯЭ. оЕПЕМЮОПЮБКЕМХЕ БШБНДЮ Я ХЯОНКЭГНБЮМХЕЛ `?', `??' ХКХ `--' ОПНЯХР ЯХЯРЕЛС НРЙПШБЮРЭ ТЮИК ХКХ ЙНМБЕИЕП РНКЭЙН ЕЯКХ ЯННРБЕРЯРБСЧЫХИ ТЮИК ХКХ ЙНЛЮМДЮ, СЙЮГЮММШЕ БЮЛХ, ЕЫЕ МЕ ХЯОНКЭГНБЮКХЯЭ БЮЬЕИ ОПНЦПЮЛЛНИ ХКХ АШКХ ГЮЙПШРШ ОНЯКЕ ОНЯКЕДМЕЦН НАПЮЫЕМХЪ Й МХЛ. йЮЙ ПЮМЕЕ СФЕ ЦНБНПХКНЯЭ (ЯЛ. ПЮГДЕК 5.8.8 [нАГНП БЮПХЮМРНБ getline], ЯРП. 59), ЛМНЦХЕ ПЕЮКХГЮЖХХ awk НЦПЮМХВХБЮЧР ВХЯКН ЙНМБЕИЕПНБ, ЙНРНПШЕ ЛНФЕР НРЙПШРЭ awk-ОПНЦПЮЛЛЮ, РНКЭЙН НДМХЛ! б gawk РЮЙНЦН НЦПЮМХВЕМХЪ МЕР. бШ ЛНФЕРЕ НРЙПШРЭ ХУ ЯРНКЭЙН, ЯЙНКЭЙН ОНГБНКЪЕР ХЯОНКЭГСЕЛЮЪ НОЕПЮЖХНММЮЪ ЯХЯРЕЛЮ. 6.7 яОЕЖХЮКЭМШЕ ХЛЕМЮ ТЮИКНБ Б gawkбШОНКМЪЕЛШЕ ОПНЦПЮЛЛШ НАШВМН ХЯОНКЭГСЧР РПХ БУНДМШУ Х БШУНДМШУ ОНРНЙЮ, ДНЯРСОМШУ ХЛ ДКЪ ДКЪ ВРЕМХЪ Х ГЮОХЯХ. щРН ЯРЮМДЮПРМШЕ ББНД, БШБНД Х ЯННАЫЕМХЪ НА НЬХАЙЮУ. оН СЛНКВЮМХЧ НМХ ОПХБЪГЮМШ Й БЮЬЕЛС РЕПЛХМЮКС, МН ВЮЯРН ОЕПЕМЮОПЮБКЪЧРЯЪ НАНКНВЙНИ ВЕПЕГ НОЕПЮРНПШ `!', `!!', `?', `??', `?&' Х `--'. бШУНД ОН НЬХАЙЕ НАШВМН ХЯОНКЭГСЕРЯЪ ДКЪ ОЕВЮРХ ЯННАЫЕМХИ НА НЬХАЙЮУ; ОПХВХМЮ РНЦН, ВРН ХЛЕЧРЯЪ НРДЕКЭМШЕ ОНРНЙХ standard output Х standard error ЯНЯРНХР Б РНЛ, ВРН ХУ ЛНФМН НРДЕКЭМН ОЕПЕ МЮОПЮБКЪРЭ. б ДПСЦХУ ПЕЮКХГЮЖХЪУ awk ЕДХМЯРБЕММШИ ЯОНЯНА МЮОХЯЮРЭ ЯННАЫЕМХЕ НА НЬХАЙЕ Б standard error Б awk-ОПНЦПЮЛЛЕ РЮЙНБ: print "Serious error detected!" -- "cat 1?&2" щРН НРЙПШБЮЕР ЙНМБЕИЕП Й ЙНЛЮМДЕ НАНКНВЙХ, ЙНРНПЮЪ ХЛЕЕР ДНЯРСО Й ОНРНЙС standard error, ОНКСВЕММШИ НР ОПНЖЕЯЯЮ awk. щРН ДЮКЕЙН НР ЩКЕЦЮМРМНЯРХ Х МЕЩТТЕЙРХБМН, ОНЯЙНКЭЙС РПЕАСЕР НРДЕКЭМНЦН ОПНЖЕЯЯЮ. оНЩРНЛС ЮБРНПШ awk-ОПНЦПЮЛЛ ВЮЯРН НРЙЮГШБЮЧРЯЪ НР ЩРНЦН. бЛЕЯРН МЕЦН НМХ БШБНДЪР ЯННАЫЕМХЪ НА НЬХАЙЮУ МЮ РЕПЛХМЮК ОНДНАМН ЯКЕДСЧЫЕЛС: print "Serious error detected!" ? "/dev/tty"щРН НАШВМН ХЛЕЕР РНР ФЕ ЯЮЛШИ ЩТТЕЙР, МН МЕ БЯЕЦДЮ: УНРЪ ЯРЮМДЮПРМШЛ БШУНДНЛ ДКЪ НЬХАНЙ ЯКСФХР РЕПЛХМЮК, НМ ЛНФЕР АШРЭ ОЕПЕМЮОПЮБКЕМ. х ЙНЦДЮ ЩРН ЯКСВЮЕРЯЪ, ГЮОХЯЭ МЮ РЕПЛХМЮК ОПНХЯУНДХР МЕОПЮБХКЭМН. б ЯКСВЮЕ, ЙНЦДЮ awk ХЯОНКМЪЕРЯЪ ХГ ТНМНБНЦН ГЮДЮМХЪ, НМН БННАЫЕ ЛНФЕР МЕ ХЛЕРЭ РЕПЛХМЮКЮ. рНЦДЮ НРЙПШРХЕ /dev/tty МЕБНГЛНФМН, Х gawk ЦЕМЕПХПСЕР ЯОЕЖХЮКЭМШЕ ТЮИКНБШЕ ХЛЕМЮ ДКЪ ДНЯРСОЮ Й РПЕЛ ЯРЮМДЮПРМШЛ ОНРНЙЮЛ. йНЦДЮ БШ ОЕПЕ МЮОПЮБКЪЕРЕ ББНД ХКХ БШБНД Б gawk Х ХЛЪ ТЮИКЮ ЯННРБЕРЯРБСЕР НДМНЛС ХГ ЩРХУ ЯОЕЖХЮКЭМШУ ХЛЕМ, РН gawk МЕОНЯПЕДЯРБЕММН ХЯОНКЭГСЕР ОНРНЙ, ЙНРНПНЛС НМН ЯННРБЕРЯРБСЕР. `/dev/stdin' яРЮМДЮПРМШИ ББНД (file descriptor 0). `/dev/stdout' яРЮМДЮПРМШИ БШБНД (file descriptor 1). `/dev/stderr' яРЮМДЮПРМШИ БШУНД Б ЯКСВЮЕ НЬХАЙХ (file descriptor 2). `/dev/fd/N ' тЮИК, ЯННРБЕРЯРБСЧЫХИ ТЮИКНБНЛС ДЕЯЙПХОРНПС N. рЮЙНИ ТЮИК ДНКФЕМ АШРЭ НРЙПШР ОПНЦПЮЛЛНИ, ХМХЖХХПСЧЫЕИ БШОНКМЕМХЕ awk (НАШВМН ЩРН ДЕКЮЕР НАНКНВЙЮ). еЯКХ БШ МЕ ОПЕДОПХМЪКХ ЯОЕЖХЮКЭМШУ ЛЕП Б НАНКНВЙЕ, ХГ ЙНРНПНИ БШ ГЮОСЯЙЮЕРЕ gawk, БЮЛ ДНЯРСОМШ РНКЭЙН ДЕЯЙПХОРНПШ 0, 1 Х 2. хЛЕМЮ ТЮИКНБ `/dev/stdin', `/dev/stdout' Х `/dev/stderr' ЪБКЪЧРЯЪ ЮКХЮЯЮЛХ ДКЪ `/dev/fd/0', `/dev/fd/1' Х `/dev/fd/2' ЯННРБЕРЯРБЕММН, МН НМХ АНКЭЬЕ ЯЮЛНОНМЪРМШ. уНПНЬХИ ЯОНЯНА ОХЯЮРЭ ЯННАЫЕМХЪ НА НЬХАЙЮУ Б ОПНЦПЮЛЛЮУ gawk ---- ОНКЭГНБЮРЭЯЪ ХЛЕМЕЛ `/dev/stderr' ОНДНАМН ЯКЕДСЧЫЕЛС: print "Serious error detected!" ? "/dev/stderr"gawk ХЛЕЕР РЮЙФЕ ЯОЕЖХЮКЭМШЕ ТЮИКНБШЕ ХЛЕМЮ, ДЮЧЫХЕ ДНЯРСО Й ХМТНПЛЮЖХХ Н ХЯОНКМЪЧЫХУЯЪ ОПНЖЕЯЯЮУ gawk. йЮФДШИ ХГ ЩРХУ "ТЮИКНБ" НАЕЯОЕВХБЮЕР НДМС ГЮОХЯЭ Я ХМТНПЛЮЖХЕИ. вРНАШ ОПНВЕЯРЭ ХУ АНКЕЕ НДМНЦН ПЮГЮ, МСФМН ЯМЮВЮКЮ ГЮЙПШРЭ ХУ ТСМЙЖХЕИ close (ЯЛ. ПЮГДЕК 6.8 [гЮЙПШРХЕ БУНДМШУ Х БШУНДМШУ ТЮИКНБ Х ЙНМБЕИЕПНБ], ЯРП. 74). хЛЕМЮ ЩРХУ ТЮИКНБ: `/dev/pid'вРЕМХЕ ЩРНЦН ТЮИКЮ ЯННАЫЮЕР ХДЕМРХТХЙЮРНП ID РЕЙСЫЕЦН ОПНЖЕЯЯЮ, Б ДЕЯЪРХВМНЛ БХДЕ, ГЮЙЮМВХБЮЪ ОЕПЕБНДНЛ ЯРПНЙХ. `/dev/ppid'вРЕМХЕ ЩРНЦН ТЮИКЮ БШДЮЕР ХДЕМРХТХЙЮРНП ОПНЖЕЯЯЮ, ОНПНДХБЬЕЦН РЕЙСЫХИ ОПНЖЕЯЯ, Б ДЕЯЪРХВМНИ ТНПЛЕ, ГЮЙЮМВХБЮЪ ЕЦН ОЕПЕБНДНЛ ЯРПНЙХ. `/dev/pgrpid'вРЕМХЕ ЩРНЦН ТЮИКЮ ДЮЕР ХДЕМРХТХЙЮРНП ЦПСООШ ОПНЖЕЯЯНБ ДКЪ РЕЙСЫЕЦН ОПНЖЕЯЯЮ. `/dev/user'вРЕМХЕ ЩРНЦН ТЮИКЮ БШДЮЕР НДМС ГЮОХЯЭ Я ОНКЪЛХ, ПЮГДЕКЕММШЛХ ОПНАЕКЮЛХ. оНКЪ ЯНДЕПФЮР ЯКЕДСЧЫСЧ ХМТНПЛЮЖХЧ: $1 нРБЕР МЮ МЮ ЯХЯРЕЛМШИ БШГНБ getuid (ХДЕМРХТХЖХПСЧЫХИ МНЛЕП ОНКЭГНБЮРЕКЪ (real user ID number)). $2 нРБЕР МЮ ЯХЯРЕЛМШИ БШГНБ geteuid (the effective user ID number). $3 нРБЕР МЮ ЯХЯРЕЛМШИ БШГНБ getgid (the real group ID number). $4 нРБЕР МЮ ЯХЯРЕЛМШИ БШГНБ getegid (the effective group ID number). еЯКХ ХЛЕЧРЯЪ ДНОНКМХРЕКЭМШЕ ОНКЪ, НМХ ЯНДЕПФЮР ЦПСООНБШЕ ХДЕМРХТХЙЮРНПШ, ЯННАЫЮЕЛШЕ ЯХЯРЕЛМШЛ БШГНБНЛ getgroups. (йПЮРМШЕ ЦПСООШ ОНДДЕПФХБЮЧРЯЪ МЕ МЮ БЯЕУ ЯХЯРЕЛЮУ.) сЙЮГЮММШЕ ЯОЕЖХЮКЭМШЕ ХЛЕМЮ ТЮИКНБ ЛНЦСР ХЯОНКЭГНБЮРЭЯЪ Б ЙНЛЮМДМНИ ЯРПНЙЕ ЙЮЙ ТЮИКШ Я ДЮММШЛХ , Ю РЮЙФЕ ДКЪ ОЕПЕМЮОПЮБКЕМХИ I/O Б ОПНЦПЮЛЛЕ awk. нМХ МЕ ДНКФМШ ХЯОНКЭГНБЮРЭЯЪ ЙЮЙ ХЯУНДМШЕ ТЮИКШ Я ОЮПЮЛЕРПНЛ `-f'. пЮЯОНГМЮБЮМХЕ ЩРХУ ЯОЕЖХЮКЭМШУ ТЮИКНБ ХЛЕМ МЕБНГЛНФМН, ЕЯКХ gawk ДЕИЯРБСЕР Б ЯНБЛЕЯРХЛНЛ ПЕФХЛЕ (ЯЛ. ПЮГДЕК 14.1 [оЮПЮЛЕРПШ ЙНЛЮМДМНИ ЯРПНЙХ], ЯРП. 161). бМХЛЮМХЕ: ЕЯКХ БЮЬЮ ЯХЯРЕЛЮ ХЛЕЕР ЙЮРЮКНЦ `/dev/fd' (ХКХ Я ХЛЕМЕЛ НДМНЦН ХГ ОЕПЕВХЯКЕММШУ БШЬЕ ЯОЕЖХЮКЭМШУ ТЮИКНБ), ХМРЕПОПЕРЮЖХЪ ЩРХУ ТЮИКНБШУ ХЛЕМ ОПНХГБНДХРЯЪ ЯЮЛНИ gawk. мЮОПХЛЕП, ХЯОНКЭГНБЮМХЕ `/dev/fd/4' ДКЪ БШБНДЮ ОПХБЕДЕР Й ГЮОХЯХ МЮ ДЕЯЙПХОРНП ТЮИКЮ 4, Ю МЕ МЮ ДЕЯЙПХОРНП МНБНЦН ТЮИКЮ, ЙНРНПШИ АШК ЯЙНОХПНБЮМ (dup'ed) Я ТЮИКНБНЦН ДЕЯЙПХОРНПЮ 4. б АНКЭЬХМЯРБЕ ЯКСВЮЕБ ЩРН МЕ ХЛЕЕР ГМЮВЕМХЪ; НДМЮЙН, БЮФМН МЕ ГЮЙПШБЮРЭ МХЙЮЙХУ ТЮИКНБ, НРМНЯЪЫХУЯЪ Й ТЮИКНБШЛ ДЕЯЙПХОРНПЮЛ 0, 1 Х 2. еЯКХ ГЮЙПШРЭ НДХМ ХГ РЮЙХУ ТЮИКНБ, ЛНЦСР ОПНХГНИРХ МЕОПЕДЯЙЮГСЕЛШЕ ПЕГСКЭРЮРШ. яОЕЖХЮКЭМШЕ ТЮИКШ, ЯНДЕПФЮЫХЕ НРМНЯЪЫСЧЯЪ Й ОПНЖЕЯЯС ХМТНПЛЮЖХЧ, ЛНЦСР АШРЭ СДЮКЕМШ ХГ ОНЯКЕДСЧЫХУ БЕПЯХИ gawk. яЛ. ПЮГДЕК C.3 [бЕПНЪРМШЕ АСДСЫХЕ ПЮЯЬХПЕМХЪ], ЯРП.299. 6.8 гЮЙПШРХЕ БУНДМШУ Х БШУНДМШУ ТЮИКНБ Х ЙНМБЕИЕПНБеЯКХ НДМН Х РН ФЕ ХЛЪ ТЮИКЮ ХКХ РНИ ФЕ ЙНЛЮМДШ НАНКНВЙХ ХЯОНКЭГНБЮМН Б getline (ЯЛ. ПЮГДЕК 5.8 [ъБМШИ ББНД Я getline], ЯРП. 53) АНКЕЕ НДМНЦН ПЮГЮ БН БПЕЛЪ БШОНКМЕМХЪ awk-ОПНЦПЮЛЛШ, РН ТЮИК НРЙПШБЮЕРЯЪ (ХКХ ЙНЛЮМДЮ ХЯОНКМЪЕРЯЪ) РНКЭЙН Б ОЕПБШИ ПЮГ. б ЩРН БПЕЛЪ ОЕПБЮЪ ГЮОХЯЭ ББНДЮ ВХРЮЕРЯЪ ХГ ЩРНЦН ТЮИКЮ ХКХ ЙНЛЮМДШ. б ЯКЕДСЧЫХИ ПЮГ, ЙНЦДЮ РНР ФЕ ТЮИК ХКХ ЙНЛЮМДЮ ХЯОНКЭГСЧРЯЪ Б getline, ДПСЦЮЪ ГЮОХЯЭ ВХРЮЕРЯЪ ХГ МХУ Х Р.Д. оНДНАМН ЩРНЛС, ЙНЦДЮ ТЮИК ХКХ ЙНЛЮМДЮ НРЙПШБЮЕРЯЪ ДКЪ БШБНДЮ, ХЛЪ ТЮИКЮ ХКХ ЙНЛЮМДШ ГЮОНЛХМЮЕРЯЪ Х БОНЯКЕДЯРБХХ awk ДНОХЯШБЮЕР ХМТНПЛЮЖХЧ Б РНР ФЕ ЯЮЛШИ ТЮИК ХКХ ЙНЛЮМДС. тЮИК ХКХ ЙНМБЕИЕП НЯРЮЧРЯЪ НРЙПШРШЛХ ДН БШУНДЮ ХГ awk. хГ ЩРНЦН ЯКЕДСЕР, ВРН ЕЯКХ БШ УНРХРЕ ВХРЮРЭ РНР ФЕ ЯЮЛШИ ТЮИК НОЪРЭ Я МЮВЮКЮ ХКХ УНРХРЕ ЯМНБЮ ГЮОСЯРХРЭ РС ФЕ ЙНЛЮМДС НАНКНВЙХ (БЛЕЯРН ОПНДНКФЕМХЪ ВРЕМХЪ ХМТНПЛЮЖХХ ХГ ЙНЛЮМДШ), БШ ДНКФМШ ОПЕДОПХМЪРЭ ЯОЕЖХЮКЭМШЕ ЬЮЦХ. хЛЕММН, БШ ДНКФМШ СОНРПЕАХРЭ ТСМЙЖХЧ close ЯКЕДСЧЫХЛ НАПЮГНЛ: close(ХЛЪ ТЮИКЮ) ХКХ close(ЙНЛЮМДЮ) юПЦСЛЕМРНЛ close ЛНФЕР АШРЭ КЧАНЕ БШПЮФЕМХЕ. еЦН ГМЮВЕМХЕ ДНКФМН РНВМН ЯННРБЕРЯРБНБЮРЭ ЖЕОНВЙЕ, ХЯОНКЭГСЕЛНИ ДКЪ НРЙПШРХЪ ТЮИКЮ ХКХ ГЮОСЯЙЮ ЙНЛЮМДШ (БЙКЧВЮЪ ОПНАЕКШ Х ДПСЦХЕ ДНОНКМХРЕКЭМШЕ ЯХЛБНКШ). мЮОПХЛЕП, ЕЯКХ БШ НРЙПШБЮЕРЕ ЙНМБЕИЕП РЮЙ: "sort -r names" -- getline foo РН БШ ДНКФМШ ГЮЙПШБЮРЭ ЕЦН РЮЙ: close("sort -r names") еЯКХ РЮЙНИ БШГНБ ТСМЙЖХХ ХЯОНКМЪЕРЯЪ, РН ЯКЕДСЧЫЮЪ getline ХГ ЩРНЦН ТЮИКЮ ХКХ ЙНЛЮМДШ, ХКХ ЯКЕДСЧЫХИ print ХКХ printf ДКЪ ЩРНЦН ТЮИКЮ ХКХ ЙНЛЮМДШ ЯМНБЮ НРЙПНЕР ЩРНР ТЮИК ХКХ ОЕПЕГЮОСЯРХР ЩРС ЙНЛЮМДС. оН РНИ ОПХВХМЕ, ВРН БШПЮФЕМХЕ, ХЯОНКЭГНБЮММНЕ ДКЪ ГЮЙПШРХЪ ТЮИКЮ ХКХ ЙНМБЕИЕПЮ, ДНКФМН РНВМН ЯННРБЕРЯРБНБЮРЭ БШПЮФЕМХЧ, ХЯОНКЭГНБЮММНЛС ОПХ НРЙПШРХХ ТЮИКЮ ХКХ ГЮОСЯЙЕ ЙНЛЮМДШ, ОНКЕГМН ХЯОНКЭГНБЮРЭ ОЕПЕЛЕММСЧ ДКЪ ГЮОНЛХМЮМХЪ ХЛЕМХ ТЮИКЮ ХКХ ЙНЛЮМДШ. оПЕДШДСЫХИ ОПХЛЕП ОПЕБПЮРХРЯЪ Б sortcom = "sort -r names" sortcom -- getline foo ... close(sortcom) щРН ОНЛНФЕР ХГАЕФЮРЭ РПСДМН НАМЮПСФХБЮЕЛШУ РХОНЦПЮТХВЕЯЙХУ НЬХАНЙ Б БЮЬХУ awk-ОПНЦПЮЛЛЮУ. оПХБЕДЕЛ МЕЯЙНКЭЙН ОПХВХМ, ОН ЙНРНПШЛ ЛНФЕР ОНМЮДНАХРЭЯЪ ГЮЙПШБЮРЭ БШУНДМНИ ТЮИК: Ю. гЮОХЯЮРЭ Б ТЮИК Х ОНГДМЕЕ ОПНВЕЯРЭ ГЮОХЯЮММНЕ Б РНИ ФЕ ЯЮЛНИ ОПНЦПЮЛЛЕ awk. дКЪ ЩРНЦН ГЮЙПНИРЕ ТЮИК ОНЯКЕ НЙНМВЮМХЪ ГЮОХЯХ Б МЕЦН. гЮРЕЛ БШ ЛНФЕРЕ МЮВЮРЭ ВРЕМХЕ ХГ МЕЦН ОН getline. А. оХЯЮРЭ БН ЛМНЦХЕ ТЮИКШ ОНЯКЕДНБЮРЕКЭМН Б РНИ ФЕ ЯЮЛНИ awk-ОПНЦПЮЛЛЕ. еЯКХ БШ МЕ АСДЕРЕ ГЮЙПШБЮРЭ ХУ, Б ЙНМЖЕ ЙНМЖНБ БШ ОПЕБШЯХРЕ ЯХЯРЕЛМШИ ОПЕДЕК МЮ ЙНКХВЕЯРБН НРЙПШРШУ ТЮИКНБ Б НДМНЛ ОПНЖЕЯЯЕ. рЮЙ ВРН ГЮЙПШБЮИРЕ ЙЮФДШИ ТЮИК ОНЯКЕ НЙНМВЮМХЪ ГЮОХЯХ Б МЕЦН. Б. нЯСЫЕЯРБХРЭ ЙНМЕЖ ЙНЛЮМДШ. йНЦДЮ БШ ОЕПЕ МЮОПЮБКЪЕРЕ БШБНД ВЕПЕГ ЙНМБЕИЕП, ЙНЛЮМДЮ ВРЕМХЪ ЙНМБЕИЕПЮ НАШВМН ОПНДНКФЮЕР ВХРЮРЭ ББНД ДН РЕУ ОНП, ОНЙЮ ЙНМБЕИЕП НРЙПШР. вЮЯРН ЩРН ГМЮВХР, ВРН ЙНЛЮМДЮ МЕ ЛНФЕР ТЮЙРХВЕЯЙХ БШОНКМХРЭ ЯБНЧ ПЮАНРС, ОНЙЮ ЙНМБЕИЕП МЕ АСДЕР ГЮЙПШР. мЮОПХЛЕП, ЕЯКХ БШ ОЕПЕ МЮОПЮБКЪЕРЕ БШБНД Б ОНВРНБСЧ ОПНЦПЮЛЛС, ЯННАЫЕМХЕ ТЮЙРХВЕЯЙХ МЕ АСДЕР ОНЯКЮМН ДН ГЮЙПШРХЪ ЙНМБЕИЕПЮ. Ц. бШОНКМХРЭ РС ФЕ ЯЮЛСЧ ОПНЦПЮЛЛС БН БРНПНИ ПЮГ Я РЕЛХ ФЕ ЮПЦСЛЕМРЮЛХ. щРН МЕ РН ФЕ ЯЮЛНЕ, ВРН ДЮРЭ АНКЭЬЕ БУНДМШУ ДЮММШУ ОПХ ОЕПБНЛ ОПНЦНМЕ! оПЕДОНКНФХЛ, МЮОПХЛЕП, ВРН БШ ОЕПЕДЮЕРЕ ПЕГСКЭРЮР ОН ЙНМБЕИЕПС Б ОНВРНБСЧ ОПНЦПЮЛЛС. еЯКХ БШ БШБНДХРЕ МЕЯЙНКЭЙН ЯРПНЙ, ОЕПЕМЮОПЮБКЕММШУ Б ЩРНР ЙНМБЕИЕП, МЕ ГЮЙПШБЮЪ ЕЦН, ЯНГДЮЕРЯЪ НДМН ЯННАЫЕМХЕ ХГ МЕЯЙНКЭЙХУ ЯРПНЙ. мЮНАНПНР, ЕЯКХ БШ ГЮЙПШБЮЕРЕ ЙНМБЕИЕП ОНЯКЕ БШДЮВХ ЙЮФДНИ ЯРПНЙХ, РН ЙЮФДЮЪ ЯРПНЙЮ ЯРЮМНБХРЯЪ НРДЕКЭМШЛ ЯННАЫЕМХЕЛ. нОЕПЮЖХЪ close БНГБПЮЫЮЕР Б НРБЕР 0, ЕЯКХ СЯОЕЬМН ГЮБЕПЬХКЮЯЭ. б ОПНРХБМНЛ ЯКСВЮЕ НРБЕР АСДЕР МЕ МНКЭ Х gawk СЯРЮМЮБКХБЮЕР Б ОЕПЕЛЕММНИ ERRNO ЖЕОНВЙС Я НОХЯЮМХЕЛ НЬХАЙХ. еЯКХ БШ ХЯОНКЭГСЕРЕ АНКЭЬЕ ТЮИКНБ, ВЕЛ ОНГБНКЪЕР НРЙПШРЭ ЯХЯРЕЛЮ, gawk АСДЕР ОШРЮРЭЯЪ ЛСКЭРХОКЕЙЯХПНБЮРЭ ДНЯРСОМШЕ НРЙПШРШЕ ТЮИКШ ЯПЕДХ БЮЬХУ ТЮИКНБ Я ДЮММШЛХ. яОНЯНАМНЯРХ gawk Б ЩРНИ НАКЮЯРХ ГЮБХЯЪР НР БНГЛНФМНЯРЕИ БЮЬЕИ НОЕПЮЖХНММНИ ЯХЯРЕЛШ, Х ЩРН МЕ БЯЕЦДЮ ЯПЮАНРЮЕР. оНЩРНЛС ДКЪ МЮДЕФМНЯРХ ОПНЦПЮЛЛШ Х АНКЭЬЕИ ОЕПЕМНЯХЛНЯРХ ЯКЕДСЕР БЯЕЦДЮ ГЮЙПШБЮРЭ ТЮИКШ ОНЯКЕ НЙНМВЮМХЪ ПЮАНРШ Я МХЛХ. |
<<< | нЦКЮБКЕМХЕ | яРПЮМХЖШ: 6 7 | >>> |