Линуксийн командыг сурцгаая

Нэр

gawk - хэв маяг хайлт ба боловсруулалтын хэл

Ерөнхий агуулга

gawk [POSIX эсвэл GNU загварын сонголтууд] -f програм-файл [ - ] файл ...
gawk [POSIX эсвэл GNU загварын сонголтууд] [ - ] програмын текст файл ...

pgawk [POSIX эсвэл GNU загварын сонголтууд] -f програм-файл [ - ] файл ...
pgawk [POSIX эсвэл GNU загварын сонголтууд] [ - ] програмын текст файл ...

Тодорхойлолт

Gawk нь GNU төслийн AWK програмчлалын хэлийг хэрэгжүүлэх явдал юм. Энэ нь POSIX 1003.2 Тушаалын Хэл болон Ашиглах Стандарт дахь хэлний тодорхойлолтод нийцдэг. Энэ хувилбар нь AWK Programming Language -ийн тайлбар дээр үндэслэгдсэн, Aho, Kernighan, Weinbergberger гэх зэргээр UNIX-ийн System V Release 4 хувилбарт нэмэлт функцүүд дээр суурилсан. Gawk нь саяхан Bell Лабораторийн автомат өргөтгөлүүд болон GNU-ийн тусгай өргөтгөлүүдээр хангадаг.

Pgawk бол gawk- ийн профайл хэлбэр юм. Энэ програм нь удаан ажилладаг бөгөөд энэ нь автоматаар гүйцэтгэгдэх горимыг awkprof.out файлд автоматаар үүсгэдэг. --profile сонголтыг доор үзүүлэв.

Тушаалын мөрөнд gawk өөрөө, AWK програмын текст (хэрэв -f эсвэл --file сонголтоор дамжуулагдаагүй бол), мөн ARGC ба ARGV-ийн урьдчилан тодорхойлсон AWK хувьсагчид тавигдах утгуудаас бүрдэнэ .

Сонголтын формат

Gawk сонголтууд нь уламжлалт POSIX нэг үсэг, эсвэл GNU загварын урт тохируулгууд байж болох юм. POSIX сонголтууд нь нэг "-" урттай эхлэх бөгөөд урт тохируулгууд нь "-" - ээр эхлэх болно. Урт тохируулгууд нь GNU-д зориулсан функцууд болон POSIX-д заасан функцуудад зориулагдсан.

POSIX стандартыг дагаж хийхийн тулд gawk -н тусгай тохируулгуудыг архиваас -W сонголтоор хангадаг. Олон -W сонголтыг хангаж болно. -W тохируулга бүр доор харуулсны дагуу тохирох урт тохируулгатай байна. Урт тохируулгуудтай холбоотой нэмэлт өгөгдлүүд нь = тэмдгээр тохируулагдсан бөгөөд ямар ч завсар зай байхгүй эсвэл дараагийн тушаалын мөрийн нэмэлт өгөгдлөөр хангаж болно. Товч товчлол өвөрмөц хэвээр байх тул урт сонголтыг товчилж болно.

Сонголтууд

Gawk нь үсгээр бичигдсэн дараах сонголтуудыг хүлээж авдаг.

-F fs

- талбар-салгагч fs оролтын талбар тусгаарлагч ( fs урьдчилан тодорхойлогдсон хувьсагчийн утга) fs ашигла.

-v var = val

--assign var = val Програмыг ажиллуулахаас өмнө var хувьсагчийн утгыг оноож өгнө. Ийм хувьсагч утгыг AWK хөтөлбөрийн BEGIN блокод ашиглах боломжтой.

-f програм-файл

--file program-file AWK програмын эхийг тушаалын эхний мөрийн мөрөөс биш файлын програмын файлаас уншина уу. Олон -f (эсвэл --file ) сонголтуудыг ашиглаж болно.

-mf NNN

-mr NNN NNN утгатай янз бүрийн санах ойн хязгаарыг тохируулах. F туг нь хамгийн их тооны талбаруудыг зааж өгдөг бөгөөд r туг нь хамгийн их бичлэгийн хэмжээг заадаг. Эдгээр хоёр тугнууд болон -m тохируулгууд нь UNIX- ийн Bell Laboratories-ийн судалгааны хувилбараас гаралтай. Тэд gawk -ээр үл тоомсорлодог. Учир нь gawk урьдчилан тодорхойлсон хязгаар байхгүй.

-W compat

-В уламжлалт

--compat

- нийцтэй горимд ажиллах. Тохиромжтой горимд gawk нь UNIX awk- тэй төстэй ажилладаг. GNU-ийн тусгай өргөтгөлүүдийн аль нь ч байхгүй. - Суурь хэрэглээ нь энэ сонголтын бусад хэлбэрүүдэд давуу эрхтэй байдаг. Нэмэлт мэдээллийг GNU EXTENSIONS хэсгээс харна уу.

-W copyleft

-В зохиогчийн эрх

-

--Зохиогчийн эрх Үндсэн стандарт гаралт дээр GNU зохиогчийн эрхийн мэдээллийн богино хэмжээний хувилбарыг хэвлээд амжилттай гарах.

-W хаягийн хувьсагчууд [ = файл ]

--dump-variable [ = file ] Дэлхий даяар хувьсагчууд, тэдгээрийн төрлүүд болон эцсийн утгуудыг файлын нэрлэсэн жагсаалтаас хэвлэх. Хэрэв ямар ч файл хангагдаагүй бол gawk нь одоогийн санд байх awkvars.out файлыг ашигладаг.

Дэлхий даяар хувьсагчдын жагсаалтыг гаргах нь таны хөтөлбөрт бичиглэлийн алдааг хайж олох хамгийн сайн арга юм. Хэрэв та том програмтай бол их хэмжээний функцтэй бол энэ сонголтыг ашиглах болно. Хэрэв та функцүүд нь танай орон нутгийн орон нутгийн хувьсагчдыг санамсаргүйгээр ашиглахыг санаарай. (Энэ нь i , j гэх мэт энгийн хувьсагчийн нэрээр энгийн алдаа гаргах гэх мэт хялбар алдаа юм.)

-В тусламж

-В хэрэглээ

--Туслаач

--usage Стандарт гаралт дээрх боломжит тохируулгуудын харьцангуй товч тоймыг хэвлэ. ( GNU кодлох жишгээс эдгээр сонголтууд нь шууд, амжилттай гарах шалтгаан болдог.)

-W хөвөн [ = хортой ]

--lint [ = fatal ] БусадAWK-ийн хэрэгжүүлэлтэд эргэлзээтэй эсвэл зөөврийн бус зүйлсийн талаар анхааруулга өгөх. Амь насаа алдах , сэрэмжлүүлэх нэмэлт нотолгооны улмаас үхлийн аюул алдагддаг. Энэ нь эрс тэс байж болох боловч түүний хэрэглээ нь цэвэр AWK хөтөлбөрүүдийг хөгжүүлэхэд түлхэц болно.

-Зул настай

- хэдэн жилийн настай Unix-ийн анхны хувилбарт зөөврийн биш зөөврийн бүтцийн талаар сэрэмжлүүлэг өгөх.

-W ген-по

--gen-po AWK програмыг задалж , задлах, стандарт гаралтын GNU .po формат файлыг програмын бүх боломжтой тэмдэгтүүдийг оруулаад оруулна . Програм нь өөрөө гүйцэтгэгдээгүй байна. .po файлуудын талаарх дэлгэрэнгүй мэдээллийг GNU gettext тархацаас үзнэ үү.

-W аравтын бус өгөгдөл

--гүй-аравтын өгөгдөл Оролтын өгөгдөл дэх octal болон hexadecimal утгуудыг таних. Энэ сонголтыг маш болгоомжтой ашиглана уу!

-W пиксик

--posix Энэ нь тохируулгын горимд дараахь нэмэлт хязгаарлалтуудтай байна:

*

\ x зугтах дараалал нь танигдаагүй байна.

*

FS нь нэг орон зайд тохируулагдах үед зөвхөн зай, табыг талбар тусгаарлагч болгон ашигладаг.

*

Та дараа нь мөрийг үргэлжлүүлж чадахгүй байна уу? болон :.

*

Түлхүүр үгийн функцийг танихгүй байна.

*

Операторууд ** ба ** = нь ^ ба ^ = -ын оронд ашиглагдахгүй.

*

Fflush () функц байхгүй байна.

-W профайл [ = prof_file ]

--profile [ = prof_file ] prof_file руу профайл өгөгдлийг илгээх. Анхдагч нь awkprof.out . Гайкийг ажиллуулахдаа профилог нь зөвхөн "нэлээн хэвлэгддэг" програмын хувилбар юм. Профктэй ажиллах үед профиль нь зүүн захын програм дахь мэдэгдэл бүрийн гүйцэтгэлийн тоололтыг агуулсан, хэрэглэгчийн тодорхойлсон функц бүрт функцийн дуудлагын тоо орно.

-W дахин интервал

--re-interval Энгийн илэрхийлэлтэй тохиргоонд интервалын илэрхийллийг ашиглахыг зөвшөөрнө ( Regular Expressions -ыг үзнэ үү). АТВ хэл дээр интервалыг уламжлалт байдлаар ашиглах боломжгүй байсан. POSIX стандарт нь тэдгээрийг нэмж, өөр хоорондоо нийцтэй болгох зорилгоор хийгдсэн. Гэхдээ тэдгээрийн хэрэглээ нь хуучин AWK програмуудыг эвдэх магадлалтай тул gawk нь энэ сонголттой хамт хүсэлт гаргасан бол, эсвэл --posix -ийг зааж өгсөн үед л олгодог .

-W эх програмын текст

- нөөцийн програм-текст AWK програмын эх код болгон програмын текст ашиглаарай. Энэ тохируулга нь тушаалын мөрөнд оруулсан эх кодын хамт library функцийн хоорондын хялбар харилцан холилтын боломжийг олгодог ( -f болон --file тохируулгууд). Энэ нь үндсэндээ бүрхүүлийн скриптүүдэд хэрэглэгддэг дунд болон том AWK програмуудад зориулагдана.

-W хувилбар

--version Стандарт гаралт дээрх gawk -ийн хуулбарыг хэвлэх хувилбарын мэдээлэл. Энэ нь таны систем дээр байгаа одоогийн хуулбар нь чөлөөт програм хангамжийн сан тарааж байгаа бүх зүйлтэй холбоотой хамгийн сүүлийн үеийн мэдээг олж авахад ихэвчлэн хэрэглэгддэг. Энэ нь алдаануудыг мэдээлэхэд хэрэг болдог. ( GNU кодлох жишгээс эдгээр сонголтууд нь шууд, амжилттай гарах шалтгаан болдог.)

- Опционы төгсгөлийг дохио. Энэ нь AWK програмд ​​"` - '' эхлэхийн тулд цаашдын нэмэлт өгөгдлүүдийг зөвшөөрөхөд ашигтай байдаг. Энэ нь голдуу POSIX-ийн бусад програмуудын хэрэглэдэг зарчмуудыг тайлбарлахтай холбоотой байдаг.

Тохирох горимд бусад ямар ч сонголтууд хүчингүй гэж тэмдэглэсэн боловч өөрөөр үл тоомсорлодог. Хэвийн үйл ажиллагаанд, програмын текстийг нийлүүлсний дараа үл мэдэгдэх тохируулгууд нь ARGV массив дахь боловсруулах AWK програмд ​​дамжуулагдана. Энэ нь "#!" "Executable interpreter механизмын тусламжтай AWK програмуудыг ажиллуулахад хэрэглэгдэх болно.

AWK PROGRAM ҮЙЛ АЖИЛЛАГАА

AWK хөтөлбөр нь хэв маяг-үйл ажиллагааны тодорхойлолт, нэмэлт функцийн тодорхойлолтуудаас бүрдэнэ.

загвар { үйл ажиллагааны тайлан }

функцын нэр ( параметрийн жагсаалт ) { statements }

Эхлээд програмын эх кодыг програмын эх файлаас , аргументаас эх үүсвэр рүү , эсвэл эхний тушаалын мөрийн нэмэлт өгөгдлөөс тушаалын мөрөн дээрээс уншдаг . -f болон --source тохируулгуудыг тушаалын мөрөнд олон удаа ашиглаж болно. Gawk програмын текстийг бүх програмын файлууд болон тушаалын эх сурвалжийн бичвэрүүд хамтдаа нийлүүлэгдсэн мэт уншдаг. Энэ нь AWK-ийн функцүүдийг ашиглахад тустай бөгөөд тэдгээрийг ашигладаг шинэ АТK програм бүрт оруулах шаардлагагүй юм. Энэ нь мөн номын сангийн функцүүдийг тушаалын мөрийн програмуудаар холих боломжийг олгодог.

Байгаль орчны хувьсагч AWKPATH нь -f тохируулгатай эх файлуудыг хайхдаа ашиглах хайлтын замыг тодорхойлдог. Хэрэв энэ хувьсагч байхгүй бол анхдагч зам нь ".:: / Usr / local / share / awk" . (Гол сан нь хэрхэн бүтээгдэж суулгагдаж байгаагаас хамаарч өөр өөр байж болно.) Хэрэв файлын нэрэнд -f тохируулганд өгөгдсөн "/ /" тэмдэгт агуулсан бол path хайлт алга байна.

Gawk нь AWK програмуудыг дараах дарааллаар гүйцэтгэдэг. Нэгдүгээрт, -v сонголтоор заагдсан хувьсах бүх үүрэг даалгаврууд хийгдэнэ . Дараа нь, gawk програмыг дотоод хэлбэрт хөрвүүлдэг. Дараа нь gawk нь BEGIN блок (хэрэв байгаа бол) кодыг ажиллуулдаг бөгөөд дараа нь ARGV массивт нэрлэгдсэн файл бүрийг унших болно. Хэрэв тушаалын мөрөнд нэрлэгдсэн файл байхгүй бол стандарт оролтыг уншина.

Хэрэв тушаалын мөрөнд файлын нэр var = val маягт байвал хувьсах хуваарилалт гэж үзнэ. Хувьсах var нь утгын утга олгоно. (Энэ нь ямар ч BEGIN блок ажиллуулсаны дараа тохиолддог.) Тушаалын мөрийн хувьсагчийн хуваарилалт AWK ашигладаг хувьсагчид утгыг динамикаар оноож өгдөг бөгөөд энэ нь оролт болон талбаруудад хэрхэн эвдэрсэн болохыг хянах хамгийн ашигтай байдаг. Мөн нэг өгөгдөл бүхий олон дамжуулалт шаардлагатай бол хяналтыг ашиглах нь бас ашигтай байдаг.

Хэрэв ARGV-ийн тодорхой элементийн утга хоосон байвал ( "" ), gawk алгасна .

Оролт дахь тэмдэглэгээ бүрийн хувьд AWK програмд ​​ямар ч загвартай тохирч байгаа эсэхийг шалгана. Баримтад тохирсон загвар бүрийн хувьд холбоотой үйлдлийг гүйцэтгэнэ. Загварууд нь хөтөлбөрийн дагуу хийгддэг дарааллаар шалгагдана.

Эцэст нь, бүх оролт дууссаны дараа gawk нь END блок дахь кодыг ажиллуулдаг (хэрвээ байгаа бол).

Хувьсагчууд, Баримтууд ба Талбарууд

AWK хувьсагчууд нь динамик; Тэд анх хэрэглэж байхдаа үүсдэг. Тэдний үнэ цэнэ нь хөвөгч цэг эсвэл мөр эсвэл аль аль нь хоёулаа хэрхэн ашигласнаас хамаардаг. AWK нь нэг хэмжээст массивтай; Олон хэмжээс бүхий массивыг загварчлан загварчилж болно. Хэд хэдэн урьдчилан тодорхойлж болох хувьсагчуудыг програм ажиллуулах маягаар тавьдаг. Эдгээрийг шаардлагатай гэж үзэн доор хураангуйлна уу.

Баримт бичиг

Ихэнхдээ бичлэгүүд нь шинэ мөрийн тэмдэгтүүдээр тусгаарлагддаг. Бичлэгүүд нь хувьсагч RS -ийн утгуудыг зааж өгснөөр та хэрхэн тусгаарлагдаж болохыг хянаж болно. Хэрвээ RS нь ганц тэмдэгт байдаг бол уг тэмдэгт нь бүртгэлийг салгана. Үгүй бол RS бол тогтмол илэрхийлэл юм. Энэ энгийн илэрхийлэлд тохирох оролтод текстийг тусад нь салгана. Гэсэн хэдий ч, нийцтэй горимд зөвхөн мөрийн утгын эхний тэмдэгтийг баримтыг салгахад ашигладаг. Хэрэв RS нь null мөрийг тохируулсан бол бичлэгүүд нь хоосон мөрөөр тусгаарлагддаг. RS нь null мөрийг тохируулах үед newline тэмдэгт нь үргэлж FS-ийн ямар ч утгатай байж болох талбар тусгаарлагч болдог.

Талбарууд

Оролтын бичлэг бүрийг уншсанаар gawk нь бичлэгийг талбар болгон хувааж, талбар тусгаарлагчийг FS хувьсагчийн утгыг ашиглана. Хэрэв FS нь ганц тэмдэгт бол талбарууд нь тухайн тэмдэгтээс тусгаарлагддаг. Хэрэв FS бол null мөр, дараа нь тус бүр тэмдэгт нь тусдаа талбар болдог. Үгүй бол ТТ нь бүрэн хэмжээний илэрхийлэл байх ёстой. Онцгой тохиолдолд FS нь нэг орон зай бөгөөд талбарууд нь зай болон / эсвэл табууд болон / эсвэл шинэ мөрүүдээр тусгаарлагддаг. (Гэхдээ факсын тухай хэлэлцүүлгийг үзнэ үү). ТАЙЛБАР: IGNORECASE- ийн үнэ цэнэ (доор үзнэ үү) нь FS нь тогтмол илэрхийлэл, талбар нь хэрхэн хуваагдах, мөн RS нь тогтмол илэрхийлэл байхад бүртгэл хэрхэн салангид хэрхэн нөлөөлдөг.

Хэрэв FIELDWIDTHS хувьсагч нь зайгаар тусгаарлагдсан тоонуудын жагсаалтад тохируулсан бол талбар бүр тогтмол өргөнтэй байх бөгөөд заасан өргөн нь заасан өргөнийг ашиглан шидэлтийг салгана . FS- ийн үнэ цэнэ үл тооцогдоно. FS- д шинэ утгыг оногдуулах нь FIELDWIDTHS- ийг ашигладаг бөгөөд анхдагч зан төлөвийг сэргээдэг.

Оролтын бичлэг дэх талбайн байрлал бүр нь $ 1 , $ 2 , гэх мэт байрлалаар иш татагдаж болно. $ 0 бол бүх бичлэг. Талбарууд нь байнга ашиглагдах ёсгүй:

n = 5
$ n хэвлэх

оролтын бичлэгт тав дахь талбарыг хэвлэнэ.

Хувьсагч NF нь оролтын бичлэгт нийт талбарын тоог тохируулна.

Үл байхгүй талбаруудын лавлагаа (өөрөөр хэлбэл $ NF-ийн дараах талбарууд) нь null-мөрийг үүсгэдэг. Гэсэн хэдий ч, огт байхгүй талбарт (жишээ нь, $ (NF + 2) = 5 ) NF- ийн утгыг нэмэгдүүлж, null мөрөөр ямар нэгэн завсарлалтын талбарыг тэдгээрийн утга болгон үүсгэж, $ 0-ын утгыг дахин хөрвүүлдэг OFS- ийн үнэ цэнээр тусгаарлагдсан талбар. Сөрөг дугаарлагдсан талбарын лавлагаа нь алдааны шалтгаан болдог. NF-г багасгах нь шинэ утгыг алдсан талбайн утгуудыг үүсгэдэг бөгөөд OFS- ийн утгаас тусгаарлагдсан талбаруудыг 0- ээр буцаах боломжтой.

Одоогийн байгаа талбарт үнэлгээ өгөхөд $ 0- ыг ашигласан тохиолдолд бүх бичлэгийг дахин бүтээх болно. Үүний нэгэн адил, $ 0- т өртөгийг оруулах нь бүртгэлийг дахин дүүргэх шалтгаан болж, талбаруудад шинэ утгуудыг үүсгэдэг.

Оруулсан хувьсагч

Gawk- ийн үндсэн хувьсагчууд нь:

ARGC

Тушаалын мөрийн нэмэлт өгөгдлүүдийн тоо ( gawk руу хийх сонголтууд эсвэл програмын эх үүсвэр оруулдаггүй).

ARGIND

ARGV дахь индекс боловсруулж байгаа файл.

ARGV

Тушаалын мөрийн нэмэлт тайлбарууд. Массивыг 0-ээс ARGC- рүү индексжүүлж байна. 1. ARGV- ийн агуулгыг динамикаар өөрчилж өгөгдөлд ашигладаг файлуудыг хянадаг.

BINMODE

POSIX бус систем дээр бүх I / O файлын хувьд "хоёртын" горимыг ашигладаг. 1, 2, 3 гэсэн тоон утгууд нь оролтын файлууд, гаралтын файлууд эсвэл бүх файлуудыг binary I / O -г ашиглана. "R" , эсвэл "w" гэсэн мөрийн утгууд нь оролтын файлууд, эсвэл гаралтын файлууд нь хоёртын I / O-г ашиглах ёстойг зааж өгнө. "Rw " эсвэл "wr" гэсэн мөрийн утга нь бүх файлуудыг хоёртын I / O ашиглах ёстой гэж заадаг. Бусад мөрийн утга нь "rw" гэж үзэж байгаа боловч анхааруулах мессеж үүсгэдэг.

CONVFMT

Тоон хувиргах формат "% .6g" , анхдагчаар.

ENVIRON

Одоогийн орчны утгыг агуулсан массив. Массив нь орчны хувьсагчаар индекслэгддэг бөгөөд элемент бүр нь тухайн хувьсагчийн утга юм (жишээ нь ENVIRON ["HOME"] / home / arnold байж магадгүй). Энэ массивыг өөрчлөх нь системийг () функцийг дахин чиглүүлэх замаар үүсгэдэг програмуудаар харагдах орчныг хөндөхгүй.

ERRNO

Хэрвээ системийн алдаа нь гуйлтын хувьд дахин чиглүүлэлт хийх, getline-ийн хувьд унших эсвэл ойрхон () үед ERRNO алдаатай холбоотой мөрийг агуулна. Утга нь Англи хэл дээр бус орчуулгад хамрагдах болно.

ФИЕЛДВИДЭЭ

Өргөн зурвасын цагаан зайд тусгаарлагдсан жагсаалт. Тогтсон үед gawk нь оролтыг талбайн тусгаарлагч болгон FS хувьсагчийн утгыг ашиглахын оронд тогтмол өргөний хэмжээгээр хуваадаг.

FILENAME

Оруулах файлын нэр. Хэрэв тушаалын мөрөнд ямар ч файл тодорхойлогдоогүй бол FILENAME- ийн утга нь `- ''. Гэсэн хэдий ч FILENAME нь BEGIN блок дотор тодорхойлогдоогүй ( getline -ээр тогтоогоогүй бол).

FNR

Оруулах бичлэгийн дугаар.

FS

Оролтын талбар тусгаарлагч, анхдагч зайгаар оруулна. Дээрх талбаруудыг үзнэ үү.

ИННОМЕРЕКА

Бүх тогтмол илэрхийлэл болон мөрийн үйлдлүүдийн тохиолдлын мэдрэмжийг хянадаг. Хэрвээ IGNORECASE нь тэгээс ялгаатай утгатай бол дүрэмд харьцуулах, FS- тэй хуваагдах талбар, RS-г салгаж бүртгэх, ~ and ! ~ , Gensub () , gsub () , index () , match () , split () , болон () дэд текст функцууд нь ердийн илэрхийлэлийн үйлдлүүдийг хийхэд хэрэглэгддэггүй. ТАЙЛБАР: Нүдний индекс нь нөлөөлөлд өртөөгүй, asort () функц ч бас байдаггүй.

Тиймээс, хэрэв IGNORECASE нь тэгтэй тэнцүү бол / aB / нь "AB" , "aB" , "Ab" , "AB" гэсэн бүх мөрүүдтэй таарна . Бүх AWK хувьсагчийн нэгэн адил IGNORECASE- ийн анхны утга тэг байдаг тул бүх энгийн илэрхийлэл ба мөрийн үйл ажиллагаа нь ихэвчлэн хэрэглэгчийн мэдрэмжтэй байдаг. Unix-ийн дагуу бүхэл бүтэн ISO 8859-1 Латин-1 тэмдэгт багцыг үл тоомсорлодог.

LINT

AWK хөтөлбөрийн дотор --lint сонголтыг динамик хянах боломжийг олгодог. Үнэн бол gawk хэвлэмэл сэрэмжлүүлгийг хэвлэнэ. Худал бол, энэ нь тийм биш юм. Тэмдэгт мөрийг "үхэл" гэсэн утга өгсөн үед, хөвөн сэрэмжлүүлэг нь үхэлд хүргэх алдаа болно. Өөр бусад үнэн утга нь сэрэмжлүүлгийг зөвхөн хэвлэдэг.

NF

Одоогийн оролтын бичлэг дэх талбарын тоо.

NR

Оролтын бичлэгийн нийт тоо одоогоор харагдаагүй байна.

OFMT

"% .6g" тоонуудын гаралтын формат нь анхдагчаар.

OFS

Гаралтын талбар тусгаарлагч, үндсэн зайгаар оруулна.

ORS

Гаралтын рекорд тусгаарлагч нь анхдагчаар newline.

PROCINFO

Энэ массивын элементүүд нь ажиллаж байгаа AWK програмын талаар мэдээлэл авах боломжийг олгодог. Зарим системүүд дээр массив дахь элементүүд байж болно, "group1" процессийг дэмждэг нэмэлт бүлгүүдийн тоо болох зарим бүлгийн хувьд "бүлгийн n " хүртэлх байж болно. Эдгээр элементүүдийг шалгахын тулд операторыг ашиглана уу. Дараах элементүүдийг ашиглах боломжтой болно:

PROCINFO ["царайлаг"]

getegid (2) системийн дуудлагын утга.

PROCINFO ["euid"]

geteuid (2) системийн дуудлагын утга.

PROCINFO ["FS"]

"FS" бол FS- тай таслагдах талбар, эсвэл "FIELDWIDTHS" бол FIELDWIDTHS- тай хуваагдах талбар хүчинтэй байна.

PROCINFO ["gid"]

getgid (2) системийн дуудлагын утга.

PROCINFO ["pgrpid"]

Одоогийн үйл явцын бүлгийн ID дугаар.

PROCINFO ["pid"]

Одоогийн үйл явцын процессийн ID.

PROCINFO ["ppid"]

одоогийн үйл явцын эцэг процессийн ID.

PROCINFO ["uid"]

getuid (2) системийн дуудлагын утга.

RS

Оролтын бичлэгийн тусгаарлагч нь анхдагчаар newline.

RT

Баримт бичлэгийн терминатор. Gawk нь RS- ээр тодорхойлогдсон тэмдэгт эсвэл тогтмол илэрхийлэлтэй тохирох оролтын текстийг RT- ээр тохируулдаг.

RSTART

Тэмдэглэгээтэй таарч буй эхний тэмдэгтүүдийн индекс () ; 0 тохирохгүй бол. (Энэ нь тэмдэгтийн индексүүд нэгээс эхэлдэг гэсэн үг юм)

RLENGTH

Тэмдэглэгээтэй таарч байгаа мөрийн урт () ; -1 таарахгүй.

SUBSEP

Массив элемент дэх олон индексийг ялгахад ашигладаг тэмдэгт, анхдагч "\ 034" .

TEXTDOMAIN

AWK хөтөлбөрийн текст домэйн; Хөтөлбөрийн тэмдэгт мөрүүдэд зориулсан орон нутгийн орчуулгыг олоход ашигладаг.

Arrays

Ачаалал нь дөрвөлжин хаалт ( [ ба ] ) хоорондын илэрхийлэлтэй байна. Үг илэрхийлэл бол экспрессийн жагсаалт ( expr , expr ...) бол массивын индекс нь илэрхийлэл бүрийн илэрхийлэл (string) утга, SUBSEP хувьсагчийн утгаас тусгаарлагдсан мөр юм. Энэ байгууламж нь олон тооны хэмжээстэй массивыг загварчлахад хэрэглэгддэг. Жишээлбэл:

i = "А"; j = "B"; k = "C"
x [i, j, k] = "Сайн уу, ертөнц \ n"

"Сайн уу, ертөнц \ n" гэсэн мөрөнд "A \ 034B \ 034C" мөрөөр индексжүүлсэн массивын элемент рүү өгдөг . AWK дахь бүх массив нь харилцан хамааралтай, өөрөөр хэлбэл string утгуудаар индексжүүлсэн байна.

Тухайн массив нь тодорхой утга бүхий индекстэй эсэхийг тодорхойлохын тулд эсвэл тусгайлсан оператор ашиглаж болно.

if (array in array) print массив [val]

Хэрэв массив олон индекстэй бол array (i, j) ашиглаарай.

Байгуулалт нь массивын бүх элементүүдийг давтахын тулд давталтад ашиглаж болно.

Элементийг устгах мэдэгдэл ашиглан массиваас устгаж болно. Устгах тэмдэглэгээг массивын бүх агуулгыг устгахад ашиглаж болно, зөвхөн индексгүйгээр массивын нэрийг зааж өгнө.

Хувьсагч оруулах болон хувиргах

Хувьсагчууд болон талбарууд нь (хөвөгч цэг), эсвэл тэмдэгтүүд, эсвэл хоёулангаар нь байж болно. Хувьсагчийн үнэ цэнийг хэрхэн тайлбарлах нь түүний нөхцөл байдлаас шалтгаална. Хэрэв тоон илэрхийлэлд ашиглавал энэ нь мөр байдлаар ашиглагдах бөгөөд энэ нь мөр байдлаар илэрхийлэгдэнэ.

Хувьсах тоогоор тоогоор харьцуулахын тулд 0-ийг нэмнэ; Үүнийг үүнийг хүчирхэг мөр болгон харьцуулахын тулд null мөрөөр холбоно.

Тэмдэгт мөр нь дугаар уруу хөрвүүлэгдэхэд хөрвүүлэх ажлыг strtod (3) ашиглан гүйцэтгэнэ. Үргэлж тэмдэгт мөрийг CONVFMT- ийн утгыг ашиглан sprintf (3) форматын мөрийг ашиглан хувьсагчийн тоон утга бүхий өгүүлбэр болгон хөрвүүлнэ . Гэсэн хэдий ч AWK-ийн бүх тоо хөвөгч цэг байдаг боловч салшгүй утга нь бүхэл тоо хэлбэрээр үргэлж хувирдаг. Тиймээс өгөгдсөн

CONVFMT = "% 2.2f" a = 12 b = a ""

b хувьсагчийн утга нь "12" ба "12.00" биш .

Gawk дараахь байдлаар харьцуулалт хийдэг. Үүнд: Хувьсагч хоёр тоогоор тоогоор нь харьцуулна. Хэрэв нэг утга тоон утгатай, нөгөө нь "тоон мөр" гэсэн мөрийн утгатай бол харьцуулалтыг тооноор нь хийдэг. Үгүй бол тоон утга нь тэмдэгт мөр рүү хөрвүүлэгдэж, мөрийн харьцуулалт хийгдэнэ. Мэдээж, мөрүүд шиг хоёр мөрийг харьцуулав. POSIX стандарт нь string-ууд ч гэсэн "тоон тэмдэгт" -ний концепцийг хэрэглэдэг. Гэсэн хэдий ч, энэ нь маш буруу, харин gawk үүнийг хийхгүй. (Аз болоход, энэ нь стандартын дараах хувилбарт тохируулагдсан байдаг.)

"57" зэрэг тогтмол тэмдэгт нь тоон тэмдэгт биш , эдгээр нь тогтмол мөр юм. `` Тоон мөр '' нь тоон мөртэй хуваагдмал () хэлбэрээр үүсгэгдсэн массив элементүүд, талбарууд, оролтууд, FILENAME , ARGV элементүүд, ENVIRON элементүүд болон элементүүдэд хамаарна. Үндсэн санаа бол хэрэглэгчийн оролт бөгөөд цорын ганц тоог харуулсан хэрэглэгчийн оролт нь ийм замаар хандах ёстой.

Uninitialized хувьсагчид нь тоон утга 0 ба string value "" (null буюу хоосон мөр).

Найман болон Hexadecimal тогтмолууд

3.1-ийн хувилбараас эхлээд та C-style octal болон hexadecimal тогтмолуудыг AWK програмын эх кодод ашиглаж болно. Жишээ нь, octal утга 011 нь аравтын бутархай 9- тэй тэнцэх бөгөөд 0x11- т арванхоёрдугаар аравтынхтай тэнцүү байна.

String Constants

AWK-ийн мөрүүд нь давхар хашилт ( " ) -тэй хавсарсан тэмдэгтүүдийн дарааллууд юм.

\\

Үндсэндээ backslash.

\ a

"Анхааруулах" тэмдэгт; ихэвчлэн ASCII BEL тэмдэгт.

\ b

backspace.

\ f

хэлбэрийн тэжээл.

\ n

шинэ шугам.

\ r

ачаа буцах.

\ t

хэвтээ таб.

\ v

босоо таб.

\ x hex цифр

\ X гэсэн 16-тын оронтой тоогоор илэрхийлэгдсэн тэмдэгт. ANSIC-ийн адилаар 16-аас дээшхи оронтой тоо нь зугтах дарааллын хэсэг гэж тооцогддог. (Энэ шинж чанар нь хэлээрх дизайны талаар ямар нэг зүйлийг хэлэх ёстой.) Жишээ нь "\ x1B" нь ASCIIESC (зугтах) тэмдэгт юм.

\ ddd

Тэмдэглэгээний 1-, 2-, эсвэл 3 оронтой дарааллаар тэмдэглэгдсэн тэмдэгт. Жишээ нь "\ 033" нь ASCII ESC (зугтах) тэмдэгт юм.

\ c

Үндсэн тэмдэгт c .

Ачааллын дарааллыг байнгын тогтмол илэрхийлэл дотор ашиглаж болно (өөрөөр хэлбэл / [\ t \ f \ n \ r \ v] / хоосон орон зайны тэмдэгтүүдтэй таарч байна).

Тохирох горимд, octal болон hexadecimal escape гэсэн дарааллаар илэрхийлсэн тэмдэгтүүд нь тогтмол илэрхийлэл тогтмол үед ашиглагдах үед literal аргаар эмчилдэг. Тиймээс / a \ 52b / нь \ a \ a \ тэнцүү юм.

Хээ болон үйлдлүүд

AWK нь шугамд чиглэсэн хэл юм. Загвар нь эхлээд, дараа нь үйлдэл ирдэг. Үйл ажиллагааны тодорхойлолтууд { ба } -д хаалттай байна. Аливаа загвар нь алга болсон, эсвэл үйлдэл алга болж болох боловч мэдээж хоёулаа биш. Хэрэв загвар байхгүй бол, үйлдэл оролтын ганц бичлэг бүрийн хувьд үйлдлийг гүйцэтгэнэ. Алга болсон үйлдэл нь

{хэвлэх}

бүх бичлэгийг хэвлэдэг.

Сэтгэгдэл нь "#" "тэмдэгтээс эхэлж, мөрийн төгсгөл хүртэл үргэлжилнэ. Хоосон мөрүүдийг тайлбаруудыг салгахад ашиглаж болно. Ихэнх тохиолдолд, мэдэгдэл нь шинэ мөрөөр дуусдаг, гэхдээ энэ нь "`, '', { , ? , : , && , эсвэл || . Төгсгөлийн мөрөөр эсвэл түүнчлэн дараахь мөрөнд автоматаар үргэлжлүүлэн явуулдаг. Бусад тохиолдолд мөрийг "төгсгөлд нь төгсгөж үргэлжлүүлж болно, тэгвэл шинэ мөрийг үл тоомсорлож болно.

Олон тооны мэдэгдэл нь нэг мөрөн дээр "" "" "" "" тусгаарлагдаж болно. Энэ нь хэв маяг-үйлдлийн хослолын (энгийн тохиолдол) үйл ажиллагааны хэсэг болон загвар-үйл ажиллагааны мэдэгдлийн аль алинд хамаарна.

Загварууд

AWK хэв маяг нь дараах зүйлсийн нэг байж болно:

BEGIN END / тогтмол илэрхийлэл / relational expression pattern & & pattern pattern || загварын хэв маяг ? хэв маяг : хэв маяг ( хэв маяг ) ! хэв маяг pattern1 , pattern2

BEGIN ба END нь оролтын эсрэг шалгагдаагүй хоёр онцгой загвар юм. BEGIN бүх загваруудын үйл ажиллагааны хэсгүүдийг нэг BEGIN блокод бичсэн бүх мэдэгдлүүдийг нэгтгэж нэгтгэсэн. Оролтыг уншиж эхлэхээс өмнө тэдгээрийг гүйцэтгэдэг. Үүнтэй адил END бүх блокуудыг нэгтгэж, бүх оролт дуусах үед (эсвэл гарах мэдэгдлийг гүйцэтгэх үед гүйцэтгэгдэнэ) гүйцэтгэгдэнэ. BEGIN ба END загваруудыг загварын илэрхийллүүдээр бусад хэв маягаар хослуулж болохгүй. BEGIN ба END хэв маяг нь үйл ажиллагааны хэсгээс алга болж чадахгүй.

/ Тогтмол илэрхийлэл / хэв маягийн хувьд холбогдох илэрхийллийг тогтмол илэрхийллэгтэй таарч оролтын бичлэг бүрт гүйцэтгэнэ. Энгийн илэрхийллүүд нь (1) -д байгаа хүмүүстэй адил бөгөөд доор хураангуйлагдсан болно.

Харилцан хамаарлын илэрхийлэл нь үйл ажиллагааны талаархи хэсэгт тодорхойлсон операторуудын аль нэгийг ашиглаж болно. Эдгээр нь ерөнхийдөө тодорхой талбарууд нь тодорхой тогтмол илэрхийллүүдтэй тохирч байгаа эсэхийг шалгадаг.

&& , || , мөн ! операторууд нь логик, логик OR, ба логик NOT байдаг. C. Тэдгээр нь богино залгааны үнэлгээг хийдэг бөгөөд мөн C-тэй адил бөгөөд илүү энгийн загварын илэрхийллүүдийг нэгтгэхэд ашиглагддаг. Ихэнх хэлїїдийн адилаар хаалтыг їнэлгээний дарааллыг єєрчлєхєд ашиглаж болно.

К : operator нь C дээрх ижил оператортой адил юм. Хэрэв эхний загвар үнэн бол туршилтанд ашигласан загвар нь хоёр дахь загвар юм бол өөрөөр бол гуравдахь нь юм. Хоёр, гурав дахь хэв маягийн зөвхөн нэг нь үнэлэгддэг.

Загварын1 , хэв маягийн загварын хэлбэрийг хэлбэлзлийн загвар гэж нэрлэдэг. Энэ нь pattern1- тэй нийцэж байгаа бичлэгийн эхлэл бүхий бүх оролтын бичлэгийг таарч, pattern2-тай нийцсэн бичлэг хүртэл үргэлжилдэг. Энэ нь ямар ч төрлийн загварын илэрхийлэлтэй нийлдэггүй.

Тогтмол илэрхийлэл

Тогтмол илэрхийлэл гэдэг нь сунгагдана. Тэдгээрийг дараах байдлаар илэрхийлдэг.

c

метафаракт биш c .

\ c

c тэмдэгтээс

.

шинэ мөр зэрэг бүх тэмдэгтийг тааруулна.

^

мөрийн эхэнд таарна.

$

мөрийн төгсгөлд таарч байна.

[ abc ... ]

Тэмдэгт жагсаалтын аль нэг тэмдэгт abc ....

[^ abc ... ]

буруу тэмдэгтийн жагсаалт, abc ... бусад тэмдэгтүүдтэй таарч байна .

r1 | r2

Өөрчлөлт: r1 эсвэл r2-т таарна.

r1r2

нийлүүлэлт: r1 , дараа нь r2 .

r +

нэг буюу түүнээс дээш r-тэй таарна.

r *

0 ба 0-ээс ихгүй байна.

r ?

тэг эсвэл нэг r-т таарна.

( r )

групп: r .

r { n }

r { n ,}

r { n , m } Хаалтан доторх нэг эсвэл хоёр тоонууд нь интервалын илэрхийллийг илэрхийлнэ . Хаалтанд нэг дугаар байгаа бол өмнөх тогтмол илэрхийлэл r n дахин давтагдана. Хэрэв таслалаар тусгаарлагдсан хоёр тоо байгаа бол r нь n m дахин давтагдана. Хэрэв нэг тоогоор таслалаар таславал r нь наад зах нь n дахин давтагдана.

Завсарлах илэрхийллүүд нь тушаалын мөрөнд --posix эсвэл --re-interval байгаа үед л боломжтой.

\ y

үгний эхлэл эсвэл төгсгөл дэх хоосон мөрийг тааруулна.

\ B

үг дотор хоосон мөр таарч байна.

\ <

үгний эхэнд байгаа хоосон мөрийг тааруулна.

\>

үгийн төгсгөл дэх хоосон мөрийг тааруулна.

\ w

ямар нэгэн үг-тэмдэгт бүрдэл (үсэг, тоо, underscore) таарч байна.

\ W

үгнүүдийн нийлбэр биш тэмдэгтийг тааруулна.

\ '

мөрөнд буферийн (мөр) эхэнд хоосон мөр таароно.

'

мөр нь буферийн төгсгөлд хоосон мөрийг тааруулна.

Тогтмол илэрхийлэлд string тогтмол байх үед хүчинтэй байх дараалал (доороос харна уу).

Тэмдэгт ангилал нь POSIX стандартад нэвтрүүлсэн шинэ боломж юм. Тэмдэгт класс нь тусгай шинж чанар бүхий тэмдэгтүүдийн жагсаалтыг тодорхойлох тусгай тэмдэглэгээ юм. Гэвч бодит тэмдэгтүүд нь улс орон бүрт өөр өөр байж болох бөгөөд тэмдэгтүүд нь тэмдэгтийн багцад тохируулагдсан байдаг. Жишээ нь, цагаан толгойн дүр төрх нь АНУ, Францад ялгаатай ойлголт юм.

Тэмдэгт анги нь зөвхөн тэмдэгтийн жагсаалтын хаалтан доторх тогтмол илэрхийлэлд хүчинтэй байна. Тэмдэгт ангиуд нь : [: , ангилалыг тодорхойлж буй түлхүүр үгс ба :] . POSIX стандартаар тодорхойлогдсон тэмдэгтүүд нь:

[: alnum:]

Тоон тэмдэгт.

[: альфа:]

Тэмдэгт үсгүүд.

[: хоосон:]

Сансрын эсвэл табын тэмдэгтүүд.

[: cntrl:]

Тэмдэгтүүдийг хянах.

[: тоо:]

Тоон тэмдэгт.

[: график:]

Хэвлэгдэх боломжтой ба харагдах тэмдэгтүүд. (А хэсэг нь хоёулаа хоёулаа хэвлэгдэх боломжтой боловч харагдахгүй)

[: бага:]

Бага үсгэн үсгэн тэмдэгтүүд.

[: хэвлэх:]

Хэвлэмэл тэмдэгтүүд (тэмдэгтүүдийг хянахгүй тэмдэгтүүд).

[: punct:]

Тэмдэгт тэмдэгтийн тэмдэгт (үсэг, тоо, хяналтын тэмдэгт, орон зайны тэмдэгт биш).

[: орон зай:]

Сансрын тэмдэглэгээ (зай, таб, формфийн гэх мэт).

[: дээд хэсэг]

Дээд үеийн цагаан толгойн үсгийн тэмдэгтүүд.

[: xdigit:]

16-тын оронтой тоо.

Жишээ нь, POSIX стандартаас өмнө үсэг тоон тэмдэгттэй таарахын тулд / [A-Za-z0-9] / гэж бичих хэрэгтэй байв. Хэрэв таны тэмдэгтийн тэмдэгтүүд өөр цагаан толгойн тэмдэгтүүдтэй байсан бол тэдгээр нь тэдгээрийг хооронд нь тааруулахгүй байх бөгөөд таны тэмдэгтийн тэмдэгт ASCII-ээс ялгаатай байсан бол ASCII үсэг тоон тэмдэгттэй таарахгүй байж магадгүй. POSIX тэмдгийн ангилалаар та / [[: alnum:]] / гэж бичиж болох бөгөөд энэ нь таны тэмдэгтийн олонлогт цагаан толгойн болон тоон тэмдэгтүүдтэй таарч болно.

Хоёр нэмэлт тусгай дарааллууд нь тэмдэгтийн жагсаалтад гарч ирдэг. Эдгээр нь нэгээс илүү тэмдэгттэй төлөөлөх нэг тэмдэг ( нэгтгэх элементүүд гэж нэрлэгдэх) -ээс тогтох бус ASCII тэмдэгтийн олонлог, түүнчлэн нэгтгэх , эсвэл эрэмбэлэх зорилготой адилхан тэмдэгтүүдтэй байдаг. (Жишээ нь, франц хэл дээр, энгийн "e" ба булшаар хийгдсэн "e" нь тэнцүү байна.)

Тэмдэглэгээ хийх

Нэмэлт тэмдэг нь олон тэмдэгт бүхий collating элемент юм . болон .] . Жишээ нь ch бол collating элемент бол [[.ch.]] Нь энэ нэгтгэсэн элементтэй таарах тогтмол илэрхийлэл байхад [ch] нь c эсвэл h гэсэн утгатай тогтмол илэрхийлэл юм.

Тэгшитгэлийн ангилал

Тэгшитгэлийн ангилал гэдэг нь ижил төстэй тэмдэгтүүдийн жагсаалтад зориулсан орон нутгийн онцлог нэр юм. Нэр нь [= ба =] -д хаалттай байна. Жишээ нь, e гэсэн нэр нь e , e ', e', 'e`' гэсэн утгыг илэрхийлж болно. Энэ тохиолдолд [[= e =]] нь e , e ' , эсвэл e`-ийн аль алинд таарна .

Эдгээр онцлог нь англи хэлээр ярьдаггүй орон нутгийнханд маш үнэ цэнэтэй юм. Номын сангийн функц нь одоогоор ердийн илэрхийлэлд зориулж ашигладаг. Тэдгээр нь тэмдэглэгээ ба эквивалент ангиудыг танихгүй.

\ Y , \ B , \ < , \> , \ w , \ W , \ ' , ба \' операторууд нь г йцэд зориулагдсан ; Эдгээр нь GNU тогтмол илэрхийлэл номын сан дахь байгууламжууд дээр суурилсан өргөтгөлүүд юм.

Төрөл бүрийн тушаалын мөрний тохируулгууд нь тэмдэгт мөрийг хэрхэн энгийн илэрхийлэлд тайлбарлахыг хянадаг.

Ямар ч сонголт байхгүй

Анхдагч тохиолдолд gawk нь POSIX-ийн тогтмол илэрхийлэл болон дээр тайлбарласан ГНУ-ийн тогтмол илэрхийлэгч операторуудын бүх тоног төхөөрөмжийг хангадаг. Гэхдээ завсрын илэрхийллүүд дэмжигдэхгүй.

- факс

Зөвхөн POSIX-ийн тогтмол илэрхийлэл дэмжигддэг, GNU операторууд нь тусгайлсан биш юм. (Жишээ нь, \ w нь шулуун утгатай). Интервалыг илэрхийлж болно.

- эрхэмлэдэг

Уламжлалт Unix awk тогтмол илэрхийллүүд таарч байна. GNU операторууд нь тусгайлсан биш, завсартай илэрхийллүүд нь боломжгүй, POSIX тэмдэгтийн ангилалууд ( [[: alnum:]] гэх мэтээр байдаггүй ). Октав болон арван зургаатын зугтах дарааллаар дүрсэлсэн тэмдэгтүүд нь ердийн илэрхийлэл мета тэмдэгтийг төлөөлж байсан ч шууд утгаар эмчилдэг.

- дахин-интервал

Зөвшөөрөгдсөн байсан ч гэсэн тогтмол илэрхийлэлд интервалыг илэрхийлэхийг зөвшөөрөх.

Үйл ажиллагаа

Үйл ажиллагааны тодорхойлолт нь хаалт, { ба } -д хаалттай байна. Үйл ажиллагааны мэдэгдэл нь ихэнх хэл дээр ердийн үүрэг даалгавар, нөхцөлт, давталтаас бүрдэнэ. Операторууд, хяналтын мэдэгдэлүүд, оролт / гаралтын тайлан нь C-ийн дараа хэв маягтай байна.

Операторууд

AWK дахь операторууд нь өмнөх давтамжийг бууруулахын тулд

( ... )

Бүлгэм

$

Хээрийн лавлагаа.

++ -

Өсөлт ба бууралт, угтвар болон шуудангийн тэмдэглэлүүд.

^

Exponentiation ( ** бас ашиглагдаж болох ба ** = даалгавар гүйцэтгэгч).

+ -!

Unary plus, unary minus, логик алдаа.

* /%

Үржүүлэх, хуваах, модулийг.

+ -

Нэмэгдэл ба хасах.

орон зай

Стрингэн холболт.

<>

<=> =

=== Холбогдох байнгын операторууд.

~! ~

Ердийн илэрхийлэл тэмцээн, ялагдашгүй тоглолт. ТАЙЛБАР: ~ эсвэл ! ~ Зүүн гар талд тогтмол тогтмол илэрхийлэл ( / foo / ) хэрэглэж болохгүй. Зөвхөн баруун гар талаас нэгийг нь ашигла. / Foo / ~ гэсэн илэрхийлэл нь (($ 0 ~ / foo /) ~ exp ) гэсэн утгатай ижил утгатай. Энэ нь ихэвчлэн төлөвлөсөн зүйл биш юм.

in

Array гишүүнчлэл.

&&

Логик нь.

| |

Логик OR.

?:

C нөхцөлийн илэрхийлэл. Энэ нь form expr1 байна уу? expr2 : expr3 . Хэрэв expr1 үнэн бол илэрхийлэлийн утга expr2 байна. Эсвэл expr3 байна. Expr2 болон expr3-ийн зөвхөн нэгийг үнэлнэ.

= + = - =

* = / =% = ^ = Даалгавар. Бодит даалгаврын ( var = утга ) ба оператор-даалгавар (бусад хэлбэрүүд) хоёулаа дэмжигддэг.

Хяналтын тайлан

Хяналтын тайлан нь дараах байдалтай байна:

( condition ) statement [ else statement ] байхад ( condition ) statement нь массив [ index ] -ийг array ( exit [ expr1 ; expr3 ; expr3 ) мэдэгдэл }

I / O Тайлбар

Оролт / гаралтын тайлан дараах байдлаар байна:

хаах ( файл [ , хэрхэн ]]

Файл, хоолой, эсвэл процессийг хаах. Хамтарсан процесст хоёр талын хоолойн нэг төгсгөлийг хаахад зөвхөн хэрхэн ашиглахыг заавал сонгоно. Энэ нь "to" эсвэл "from" гэсэн мөрийн утга байх ёстой.

getline

Дараагийн оруулах бичлэгээс $ 0- ыг тохируулна уу; NF , NR , FNR тохируул .

getline < file

Файл дараагийн бичлэгээс $ 0- ыг тохируулна уу ; NF тохируул.

getar var

Дараагийн оруулах бичлэгээс var тохируулна; NR , FNR тохируул .

getar var < file

Файл дараагийн бичлэгээс var тохируулна .

тушаал | getline [ var ]

Run тушаал нь дээрх гаралтыг $ 0 эсвэл var руу шилжүүлнэ.

тушаал | & getline [ var ]

Хамтарсан командыг процесс болгон дээрх гаралтыг $ 0 эсвэл var $ болгон хуваадаг. Хамтарсан үйл явц нь гүүрний өргөтгөл юм.

дараачийн

Одоогийн оролтын бичлэгийг боловсруулахаа зогсоох. Дараагийн оролтын бичлэгийг AWK хөтөлбөрийн эхний загварыг ашиглан эхэлж унших болно. Оролтын өгөгдлийн төгсгөлд хүрсэн бол END block (s), хэрэв байгаа бол гүйцэтгэнэ.

nextfile

Одоогийн оролтын файлыг боловсруулахаа болих хэрэгтэй. Дараагийн оролтын бичлэг нь дараагийн оролтын файлаас ирдэг. FILENAME болон ARGIND шинэчлэгдэж байгаа тул FNR нь 1 гэж тохируулагдах ба AWK програмын эхний загварыг эхлүүлэх болно. Оролтын өгөгдлийн төгсгөлд хүрсэн бол END block (s), хэрэв байгаа бол гүйцэтгэнэ.

хэвлэх

Одоогийн бичлэгийг хэвлэ. Гаралтын бичилт нь ORS хувьсагчийн утгатай цуцлагдана.

expr-жагсаалт хэвлэх

Хэвлэх илэрхийллүүд. Үзэмж бүрийг OFS хувьсагчийн утгаас тусгаарлана. Гаралтын бичилт нь ORS хувьсагчийн утгатай цуцлагдана.

expr-list > файлыг хэвлэх

Файл дээр илэрхийллийг хэвлэнэ. Үзэмж бүрийг OFS хувьсагчийн утгаас тусгаарлана. Гаралтын бичилт нь ORS хувьсагчийн утгатай цуцлагдана.

printf fmt, expr-жагсаалт

Форматлах ба хэвлэх.

printf fmt, expr-list > файл

Файл дээр форматлах болон хэвлэх.

систем ( cmd-line )

Тушаалын cmd-line тушаалыг ажиллуулж exit status-г буцаана. (Энэ нь POSIX бус систем дээр боломжгүй байж магадгүй.)

fflush ( [ файл ] )

Нээлттэй гаралтын файл эсвэл хоолойн файлтай холбоотой буфферуудыг устгана. Хэрэв файл алга болсон тохиолдолд стандарт гаралтыг унтраадаг. Хэрэв файл null мөр юм бол бүх гаралтын файлууд болон хоолойнууд нь тэдгээрийн буфферууд цацагдсан байдаг.

Нэмэлт гаралтын чиглүүлэлтүүдийг хэвлэх болон хэвлэх боломжтой .

хэвлэх ... >> файл

Гаралтыг файл руу нэмнэ.

хэвлэх ... | тушаал

хоолой дээр бичдэг.

хэвлэх ... | & тушаал

өгөгдлийг хамтран боловсруулахад илгээдэг.

Getline команд нь файлын төгсгөлд 0- ийг алдаагаар буцаана. Алдаа гарсаны дараа ERRNO асуудлыг тодорхойлж буй мөрийг агуулна.

ТАЙЛБАР: Хэрвээ шугамыг холбох , эсвэл хэвлэмэл буюу хэвлэмэл хүртэхийг ашиглан хоолой, эсвэл процессыг ашиглана гэвэл тушаалын шинэ тохиолдлуудыг хаах хэрэгтэй . AWK автоматаар EOF-г буцаах үед хоолой, эсвэл процессыг автоматаар хаадаггүй.

Printf Statement

Printf statement болон sprintf () функцын AWK хувилбарууд (доороос үзнэ үү) дараах хөрвүүлэх тодорхойлолтыг хүлээн авдаг.

% c

ASCII тэмдэгт. % C-д ашигласан аргумент бол тоогоор хэвлэгддэг. Үгүй бол аргумент нь тэмдэгт мөр гэж тооцогддог бөгөөд уг мөрний эхний тэмдэгт нь хэвлэгддэг.

% d , % i

Аравтын тоо (бүхэл хэсэг).

% e,% E

Маягт хөвөх цэгийн дугаар [-] d.dddddde [+ -] dd . % E формат нь e- г оронд E- г ашигладаг.

% f

Маягт хөвөх цэгийн дугаар [-] ddd.dddddd .

% g,% G

% E эсвэл % f хөрвүүлэлтийг ашигла, аль нь богино, үл ялигүй тэгүүдээр дарагдана. % G формат % e-ийн оронд % E- г ашигладаг.

% o

Аль ч тэмдэггүй дугаартай (мөн бүхэл тоо).

% u Аравтын тоогүй (бүхэл тоо).

% s

Тэмдэгт мөр.

% x,% X

Товлосон тоогоор нь дугаарласан тоо (бүхэл тоо). % X формат нь abcdef-ийн оронд ABCDEF- ийг ашигладаг.

%%

Ганц % тэмдэг; Ямар ч аргаар хөрвүүлэгддэггүй.

Нэмэлт, нэмэлт параметрүүд нь % болон хяналтын үсгийн хооронд байж болно:

тоолох $

Форматад энэ үед тоолох дугаарыг ашигла. Үүнийг positional гэж нэрлэдэг бөгөөд үндсэндээ AWK хөтөлбөрийн эх бичвэрт бус форматын хэлхээний орчуулгын хувилбаруудад ашиглахад зориулагдсан. Энэ нь гүүрний өргөтгөл юм.

-

Үг хэллэг доторх илэрхийлэлд үлдэх ёстой.

орон зай

Тоон хөрвүүлэлтүүдийн хувьд санах ой бүхий эерэг утга, хасах тэмдэг бүхий сөрөг утга.

+

Нэмэлт тэмдэглэгээ, өргөн хувиргагчаас өмнө (доороос харна уу) форматлагдсан өгөгдөл эерэг байсан ч тоон хувиргах тэмдгийг байнга нийлүүлдэг гэж хэлсэн. + Space санах ойг дарж дардаг.

#

Зарим тодорхой захидлын хувьд "өөр хэлбэр" -ийг ашиглана уу. % O-ийн хувьд, тэргүүлэх тэгийг зааж өгнө. % X , ба % X-ийн хувьд 0x эсвэл 0x тэргүүлэх чиглэлийн бус үр дүнг хангах. % E , % E , ба % f-ийн хувьд үр дүн үргэлж аравтын цэгийг агуулна. % G , болон % G- д үр дүнг хасаж тэгийг хасахгүй.

0

Дэвсгэр 0 (тэг) нь туг маягаар ажилладаг бөгөөд энэ нь гарцын оронд гарц нь тэгтэй хамт байх ёстой гэдгийг харуулж байна. Энэ нь тоон бус бүтээгдэхүүний форматтай ч хамаатай. Энэ туг нь талбайн өргөнийг хэвлэх үнэтэй харьцуулахад илүү өргөн хэрэглэгддэг.

өргөн

Талбай нь энэ өргөнтэй байх ёстой. Энэ талбар нь ихэвчлэн орон зайтай хагардаг. Хэрэв 0 туг хэрэглэж байгаа бол энэ нь тэгтэй хамт padded юм.

. prec

Хэвлэх үед ашиглах нарийвчлалыг тодорхойлсон тоо. % E , % E , болон % f хэлбэрүүдийн хувьд энэ нь аравтын бутархайн баруун талд хэвлэсэн хэвийн тоог илэрхийлнэ. % G , болон % G форматын хувьд энэ нь ихээхэн тооны том цифрүүдийг заана. % D , % o , % i , % u , % x , болон % X форматуудын хувьд хэвлэх цифрүүдийн хамгийн бага тоог зааж өгнө. % S-ийн хувьд энэ нь хэвлэгдэх ёстой тэмдэгт мөрүүдийн хамгийн их тоог илэрхийлдэг.

ANSI C printf () горимуудын динамик өргөн ба давуу чанарууд дэмжигддэг. A * өргөн буюу өмнөх үзүүлэлтүүд нь тэдгээрийн утгыг printf эсвэл sprintf () хүртэлх утгыг авахад хүргэдэг. Динамикаар өргөн буюу нарийвчлалтай байрлалыг ашиглахын тулд $ мөрийг форматын мөрөнд бичнэ. Жишээ нь "% 3 $ * 2 $. * 1 $ s" .

Файлын тусгай нэр

I / O дахин чиглүүлэлт хийхдээ хэвлэх эсвэл printf файл эсвэл файлын getline- ээр дамжуулан зарим тусгай файлын нэрсийг дотооддоо хүлээн зөвшөөрдөг. Эдгээр файлын нэрүүд нь gawk- ийн parent процессоос (ихэвчлэн бүрхүүл) хандах нээлттэй файлын тодорхойлогчуудыг хандахыг зөвшөөрдөг. Эдгээр файлын нэрийг командын мөрөн дээр өгөгдлийн файлуудаа нэрлэхэд хэрэглэж болно. Файлууд нь:

/ dev / stdin

Стандарт оролт.

/ dev / stdout

Стандарт гаралт.

/ dev / stderr

Стандарт алдааны гаралт.

/ dev / fd / n

Нээлттэй файлын тодорхойлогч n- тэй холбоотой файл.

Эдгээр нь ялангуяа алдааны мэдэгдэлд ашигтай байдаг. Жишээлбэл:

"Та үүнийг үлээв"! > "/ dev / stderr"

гэхдээ та өөрөөр ашиглах хэрэгтэй болно

"Та үүнийг үлээв"! | "муур 1> & 2"

TCP / IP сүлжээний холболт үүсгэхэд дараах тусгай файлын нэрийг & | процесс боловсруулагчид ашиглаж болно.

/ inet / tcp / lport / rhost / rport

Локал портын рport дээр алсын хост host rhost руу TCP / IP холболтод зориулсан локал портын файл . Системийг порт сонгохын тулд 0 портыг ашиглана уу.

/ inet / udp / lport / rhost / rport

Үүнтэй адил боловч TCP / IP-ийн оронд UDP / IP- г ашиглаарай.

/ inet / raw / lport / rhost / rport

Ирээдүйд ашиглахад нөөцлөгдсөн.

Бусад тусгай файлын нэрс нь ажиллаж байгаа үйлдлийн талаар мэдээлэл авах боломжийг олгодог. Эдгээр файлын нэрүүд одоо хуучирсан. PROCINFO массивыг ашигладаг мэдээллээ олж авах. Файлууд нь:

/ dev / pid

Энэ файлыг унших нь одоогийн үйл явцын процес ID-г буцаана, аравтын бутархайг шинэ мөрөөр цуцална.

/ dev / ppid

Энэ файлыг унших нь одоогийн үйл явцын эцэг процессийн ID-г буцаана, аравтын бутархайг шинэ мөрөөр цуцална.

/ dev / pgrpid

Энэ файлыг унших нь одоогийн үйл явцын бүлгийн ID дугаарыг буцаана, аравтын бутархайг шинэ мөрөөр цуцална.

/ dev / хэрэглэгчийн

Энэ файлыг унших нь шинэ мөрөөр дуусгавар болсон ганц бичлэгийг буцаана. Талбарууд нь зайгаар тусгаарлагдсан байна. $ 1 нь geteuid (2) системийн дуудлагын утга, $ 2 нь geteuid (2) системийн дуудлагын утга, $ 3 getgid (2) системийн дуудлагын утга, $ 4 нь getegid (2) системийн дуудлага. Хэрэв ямар нэг нэмэлт талбар байгаа бол тэдгээр нь getgroups (2) буцаж ирсэн бүлгийн ID байна. Олон бүлгүүд бүх систем дээр дэмжигдэхгүй байж болно.

Тоон функц

AWK дараахь үндсэн арифметик функцтэй:

atan2 ( y , x )

Ратчуудын y / x -ийн arctangent-г буцаана.

cos ( expr )

Радиус дахь эксприныг буцаана.

exp ( expr )

Өргөтгөсөн функц.

int ( expr )

Integer хүртэл бүхэл тоо.

log ( expr )

Байгалийн логарифмын функц.

rand ()

0 ба 1 хоорондох санамсаргүй дугаарыг буцаана.

нүгэл ( expr )

Радиус дахь экспрессын синусыг буцаана.

sqrt ( expr )

Дөрвөлжингийн үндсэн функц.

srand ( [ expr ] )

Экспресс нь санамсаргүй тоон генераторын шинэ үрийг ашигладаг. Хэрэв ямар ч хугацаа зарцуулаагүй бол өдрийн цаг ашиглагдах болно. Буцах утга нь санамсаргүй тоон генераторын өмнөх үрийг хэлнэ.

String функц

Gawk нь дараахь функцуудтай байна:

asort ( s [ , d ] )

Эх массив s-ийн элементийн тоог буцаана. S- ийн агуулга нь утгыг харьцуулахын тулд gawk- ийн ердийн дүрмүүдийг ашиглан эрэмбэлэгдэж байгаа утгуудын индексийг 1-ээс эхлэн дараалан тоогоор солино. Хэрэв сонголттой очих газрын массив d нь тодорхойлогдсон бол s нь d-д давхардсан , дараа нь d нь эрэмбэлэгддэг бөгөөд эх массивын өөрчлөлтийн индексүүдийг орхигдуулах болно.

gensub ( r , s , h [ , t ] )

Тогтмол илэрхийлэлд тохирсон тэмдэгт мөрийг хайх r . Хэрэв h нь g эсвэл G-ийн эхлэлтэй бол r-ийн бүх таарцыг s -ээр солино. Өөрөөр бол, h нь солихын тулд r- тэй тохирох дугаарыг илэрхийлнэ. Хэрэв t нийлүүлэгдээгүй бол $ 0- г ашигладаг. Орлуулах текстийн дотор n нь дараалал \ n , энд n нь 1-ээс 9 хүртэлх тоонууд нь зөвхөн n 'хаалттай subexpression-тэй таарсан текстийг заана. Доорх дараалал \ 0 нь бүхэлд нь таарсан текстийг илэрхийлж байна. Дэд () болон gsub () -тай ялгаатай нь өөрчлөгдсөн мөрийг функцийн үр дүнд буцааж өгдөг бөгөөд анхны зорилтот мөр өөрчлөгдөөгүй болно.

gsub ( r , s [ , t ] )

String t дэхь тогтмол илэрхийлэл r- тэй дэд тэмдэгт мөрийн хувьд тэмдэгт мөрийг орлуулж орлуулах тоог буцаана. Хэрэв t нийлүүлэгдээгүй бол $ 0 ашиглаарай. Нөхөн сэргээх текст нь яг таарсан текстээр солигдоно. \ & Literal> -ийг ашиглах хэрэгтэй. (Энэ нь "\\ &" гэж бичсэн байх ёстой) GAWK: sub () , gsub () , болон gensub () -ийн орлуулах текстээр & backslashes дүрмүүдийн талаарх бүрэн дүүрэн хэлэлцүүлгийг үр дүнтэй AWK програмчлалаас үзнэ үү.

индекс ( s , t )

Хэрэв мөр байхгүй байвал $ s $ тэмдэгт мөрийн индексийг буцаана. (Энэ нь тэмдэгтийн индексүүд нэгээс эхэлдэг гэсэн үг юм)

урт ( [ s ] )

Зөвшөөрөгдсөн s тэмдэгтүүдийн уртыг буцаана эсвэл s бол нийлүүлэлтийн уртыг буцаана .

match ( s , r [ , a ] )

Энд илэрхий r илэрхийлэх r байрлал дахь байрлалыг буцаана, эсвэл r байхгүй бол RSTART ба RLENGTH утгуудыг тогтооно . Аргументийн дэс дараалал нь ~ operator: str ~ re юм. Хэрэв a массивыг өгсөн бол а нь цэвэрлэгдэж, дараа нь 1-ээс эл элемент нь r- д хамаарах хаалттай subexpression-тай тохирч байгаа s- ийн хэсгүүдээр дүүрдэг. 0-р элемент нь нийт тогтмол илэрхийлэлтэй таарч байгаа хэсгийг агуулдаг.

хуваах ( s , a [ , r ] )

Хүснэгтийн s нь таслалаар r илэрхийлж, талбарын тоог буцаана. Хэрэв r -ийг орхисон бол FS- г ашигладаг. А array нь эхлээд цэвэрлэгддэг. Дээр тодорхойлсон талбайн хуваалттай адил хуваагдмал байдал.

sprintf ( fmt , expr-жагсаалт )

Fmt-ийн дагуу expr-жагсаалтыг хэвлээд үр дүнг буцаана.

strtonum ( str )

Str-г шалгаж , түүний тоон утгыг буцаана. Хэрэв str нь тэргүүлэх 0- ээр эхэлбэл strtonum () нь str нь octal дугаар гэж үздэг. Хэрэв str нь 0x эсвэл 0x тэргүүлэх бол strtonum () нь str нь 16-тын тоогоор тооцдог.

дэд ( r , s [ , t ] )

Зөвхөн gsub () шиг, харин зөвхөн эхний тохирох дэд серверийг сольдог.

substr ( s , i [ , n ] )

I- ээс эхлэх хамгийн их n -character дэд серийн буцаана. Хэрэв n орхигдсон бол үлдсэн нь ашиглагдана.

tolower ( str )

Тэмдэгт мөрийн хуулбарыг бүх жижиг үсгээр тэмдэглэв. Үсэггүй тэмдэгтүүд нь өөрчлөгдөөгүй үлдсэн байна.

toupper ( str )

Тэмдэгт мөрийн хуулбарын хуулбарыг буцааж өгнө. Бүх жижиг тэмдэгтүүд нь тэдгээрийн холбогдох дэд бүлгүүд рүү хөрвүүлэгдэнэ. Үсэггүй тэмдэгтүүд нь өөрчлөгдөөгүй үлдсэн байна.

Цагийн үйл ажиллагаа

AWK хөтөлбөрийн үндсэн хэрэглээний нэг нь цагын тэмдэгтийн мэдээлэл агуулсан бүртгэлийн файлуудыг боловсруулдаг тул gawk нь цагийн марк авах болон форматлахад дараах функцээр хангадаг.

mktime ( datespec )

Rurns datepec нь симболын () хэлбэрээр буцаасан ижил хэлбэрийн цагийн дараалалд орно. Datepec нь YYYY MM DD HH ММ SS [DST] хэлбэрийн мөр юм. Мөрний агууламж зургаан буюу долоон тоогоор бүтэн жилийн турш зууны 1, 12-р сар, 1-ээс 31-ний хооронд сар, 0-ээс 23 хүртэлх өдөр, 0-ээс 0 мин хүртэл 59, хоёр дахь нь 0-ээс 60 хүртэл, нэмэлт өдрийн гэрэлтүүлгийн далбаа. Эдгээр тоон утгууд нь тодорхойлсон хүрээн дотор байх ёсгүй; Жишээлбэл, 1 цаг нь шөнө дундаас 1 цагийн дараа юм. Хугацаа-тэг Gregorian хэмээх хуанлийг 0-ээс өмнөх жилийн 0-ээр, 0-ээр өмнөх жил гэж үздэг. Орон нутгийн цагийн бүсэд цаг хугацаа гэж тооцогддог. Хэрэв өдрийн өдрийн хэмнэлттэй эерэг байвал гэрлийг өдрийн цагаар хэмнэсэн гэж үзнэ. Хэрэв тэг бол хугацаа нь стандарт хугацаа гэж тооцогддог; Хэрэв сөрөг (анхдагчаар), mktime () нь заасан хугацаандаа өдрийн цагаар ажиллах эсэхийг тодорхойлох оролдлого хийдэг. Datepec нь хангалттай элементүүд агуулаагүй эсвэл үр дүнд хүрэх хугацаа нь дууссан бол mktime () нь -1 утгатай байна.

strftime ( [ формат , timestamp ]] )

Форматын тодорхойлолт дээр үндэслэн цаг хугацааны хэлбэр. Timestamp нь симболын () горимоор буцаагдах адил хэлбэртэй байна. Хэрэв цаг хугацааг алдаагүй бол өнөөгийн цагийг ашиглана. Хэрвээ формат байхгүй бол, огноо (1) -тэй адил анхдагч форматыг ашиглана. ANSI C-ийн strftime () функцийн тодорхойлолтыг ашиглах боломжтой баталгаатай хөрвүүлэх форматыг үзнэ үү. Strftime (3) -н олон нийтийн домэйны хувилбар болон түүний хуудасны хуудаснууд нь бий. Хэрэв энэ хувилбар gawk бүтээхэд хэрэглэгдэж байсан бол тухайн хуудсанд тайлбарласан бүх хөрвүүлэлтийг хийх боломжтой .

systime ()

Epoch-с хойш өнөөгийн цагийг буцаана (1970-01-01 00:00:00 UTC POSIX системүүд дээр).

Битийн Manipulations Functions

3.1-ийн хувилбараас эхлэн дараах bit manipulation функцууд байдаг. Тэд урт нарийвчлалтай урт бүхэл тоогоор хөврөх цэгийн утгыг хувиргаж, үйлдлийг хийж, дараа нь үр дүнг хөвөгч цэг рүү хөрвүүлдэг. Функцууд нь:

ба ( v1 , v2 )

Bitwise рүү буцах ба v1 болон v2- ээс өгөгдсөн утгууд.

гомдол ( буух )

Беттерийн утгыг буцаана .

lshift (VAL , тоо )

Хэмжээтэй битээр зүүн шилжсэн хэлбэлзлийн утгыг буцаана.

эсвэл ( v1 , v2 )

Bitwise буцах OR v1 ба v2- ээс өгсөн утгуудын буцах.

rshift (VAL , тоо )

Валийн утга буцаах, тоолох битээр дамжуулна.

xor ( v1 , v2 )

V1 ба v2-ийн өгсөн утгыг XOR bitwise-ээр буцаана.

Олон улсын хэмжээнд хөгжүүлэх чиг үүрэг

Галтк 3.1 хувилбараас эхлээд таны AWK програмд ​​ажиллаж байгаа мөрүүдийг орчуулахын тулд дараах функцуудыг ашиглаж болно. Дэлгэрэнгүй мэдээллийг GAWK-аас харна уу . Үр нөлөөтэй AWK програмчлал .

bindtextdomain ( лавлах [ домэйн ] )

"Стандарт" байршилд (жишээлбэл, туршилтын явцад) байрлуулах боломжгүй, эсвэл байршуулаагүй тохиолдолд .mo файлын байршлыг зааж өгнө. Энэ нь домэйн "bound" гэсэн санг буцаадаг.

Анхдагч домэйн нь TEXTDOMAIN- ийн үнэ цэнэ юм. Хэрэв сан нь null мөр ( "" ) бол bindtextdomain () нь өгөгдсөн домэйны хувьд одоогийн холболтыг буцаана.

dcgettext ( мөр [ , домэйн [ , категори ]] )

Лавлагааны домэйн домэйн дахь логоны категорийн ангилалыг хөрвүүлэхийг буцаана. Домэйн дээрх анхдагч утга нь TEXTDOMAIN- ийн өнөөгийн үнэ цэнэ юм. Ангиллын анхдагч утга нь "LC_MESSAGES" .

Хэрэв та категорийн утгыг нийлүүлж байгаа бол энэ нь GAWK- д тодорхойлогдсон локал категориудтай тэнцүү мөр байх ёстой : Үр нөлөөтэй AWK програмчлал . Та мөн текст домэйныг нийлүүлэх ёстой. Хэрэв та одоогийн домэйныг ашиглах бол TEXTDOMAIN- г ашиглана уу.

dcngettext ( string1 , string2 , дугаар [ , домэйн [ , категори ]] )

Текст домэйны домайнд string1 ба string2 орчуулгын дугаарыг локал категорийн ангиллын тоогоор дугаарласан тоогоор буцаана. Домэйн дээрх анхдагч утга нь TEXTDOMAIN- ийн өнөөгийн үнэ цэнэ юм. Ангиллын анхдагч утга нь "LC_MESSAGES" .

Хэрэв та категорийн утгыг нийлүүлж байгаа бол энэ нь GAWK- д тодорхойлогдсон локал категориудтай тэнцүү мөр байх ёстой : Үр нөлөөтэй AWK програмчлал . Та мөн текст домэйныг нийлүүлэх ёстой. Хэрэв та одоогийн домэйныг ашиглах бол TEXTDOMAIN- г ашиглана уу.

USER-DEFINED FUNCTIONS

AWK-ийн функцийг дараах байдлаар тодорхойлдог:

функцын нэр ( параметрийн жагсаалт ) { statements }

Функцүүд эсвэл үйлдлүүдээр илэрхийлэгдэх функцүүдээс дуудагдах функцүүдийг гүйцэтгэдэг. Функцийн дуудлагад өгөгдсөн бодит параметрүүд нь функцэд илэрхийлсэн албан ёсны параметрүүдийг илэрхийлэхэд хэрэглэгддэг. Агуулга нь эталоноор дамждаг, бусад хувьсагч утгаас дамждаг.

Анх функц нь AWK хэлний нэг хэсэг биш байсан тул орон нутгийн хувьсагчдын заалт нь жаахан ойлгомжгүй байдаг: Эдгээр нь параметрийн жагсаалтад нэмэлт параметр болж зарлагддаг. Конвенц нь параметрийн жагсаалт дахь нэмэлт зайгаар бодит параметрээс орон нутгийн хувьсагчдыг салгахад оршино. Жишээлбэл:

f (p, q, a, b) функц # а ба b нь {...} / abc / {...; f (1, 2); ...}

Функцийн дуудлагын зүүн хаалтанд функцийн нэрийг шууд даруйхан цагаан зайгүйгээр ажиллуулах шаардлагатай. Энэ нь нэгтгэгч операторт синтаксийн хоѐрдмол байдал үүсгэхгүй байх явдал юм. Энэ хязгаарлалт нь дээр жагсаасан үндсэн функцүүдэд хамаарахгүй.

Функцууд хоорондоо холбогдож, рекурсив байж болно. Орон нутгийн хувьсагч хэлбэрээр ашиглагдах функцын параметрүүд нь null мөр болон функцийг дуудах үед 0 гэсэн тоогоор эхэлнэ.

Ашиглалтын үр дүнг буцаахын тулд буцах expr- г ашиглана. Буцаах утга нь утга өгөгдөөгүй бол, эсвэл функц нь төгсгөлөөр "унаж" байвал буцаагдахгүй.

Хэдийгээр хэрэв өгсөн бол gawk нь ажиллуулах цагтай биш харин дуудлага хийгдээгүй функцууд руу заасан дуудлагуудын талаар анхааруулдаг. Тодорхойгүй функцыг ажиллуулах үед дуудах нь үхлийн алдаа юм.

Функцын функцийг ашиглаж болно.

ШИНЭ Функциональ үзүүлэлттэй байна

3.1 хувилбараас эхлээд та gawk интерфэйстэй ажиллахдаа шинэ built-in функцуудыг динамикаар нэмж болно. Бүрэн мэдээлэл нь энэ гарын авлагын хуудасны хүрээнээс хальсан; GAWK- г үзнэ үү : Нарийвчилсан AWK програмчлалыг дэлгэрэнгүй харна уу.

өргөтгөл ( объект , функц )

Объектоор нэрлэгдсэн хуваалцсан объект файлыг динамикаар холбож, тухайн объектын функцийг дуудаж эхлүүлэх. Эдгээр нь аль аль нь тэмдэгт мөр байдлаар байх ёстой. Функцээр буцаасан утгыг буцаана.

Энэ функцыг GAWK-д үр дүнтэй AWK программаар хангадаг бөгөөд энэ функцын тухай бүхэн дараагийн хувилбарт өөрчлөлт орох магадлалтай. Та энэ функцыг дахин ашиглахыг хүсэхгүй байгаа зүйл дээр ашиглахгүй байхыг Та STRONGLY зөвлөж байна.

SIGNALS

pgawk хоёр дохиог хүлээн авдаг. SIGUSR1 нь профайлыг овоолох, дуудах стекийг профайл файлын тохируулгатай ямар ч файл өгөгдсөн профайл файл руу чиглүүлдэг . Дараа нь ажилласаар л байна. SIGHUP нь профайл болон функцийг дуудах стек хожимдуулж дараа нь гарах болно.

Жишээ нь

Бүх хэрэглэгчдийн нэвтрэх нэрийг хэвлэх ба ангилах: BEGIN {FS = ":"} {хэвлэх $ 1 | "sort" гэж бичнэ үү: {nlines ++} END {print nlines} Мөр бүрийг файлын дугаараар нь урьдчилан бичнэ: {print FNR, $ 0} Нийлмэл ба мөрийн дугаар (сэдэвт өөрчлөлт оруулах): { $ 0}

Интернетжилт

String constants нь давхар хашилтанд бичигдсэн тэмдэгтүүдийн дараалал юм. Англи хэлээр ярих орчинд AWK хөтөлбөрт тэмдэгт мөрийг байгалийн хэл рүү орчуулахыг шаарддаг. Ийм тэмдэгтүүдийг AWK хөтөлбөрт тэмдэглэсэн ('`_' '). Жишээлбэл,

gawk 'BEGIN {print "сайн уу, ертөнц"}'

Сайн байна уу, ертөнцийг хэвлэ. Гэхдээ,

gawk 'BEGIN {хэвлэх _ "сайн уу, ертөнц"}'

Францын bonjour, monde хэвлэх боломжтой.

AWK хөтөлбөрийг бий болгох, ажиллуулахад хэд хэдэн алхам бий.

1.

TEXTDOMAIN хувьсагч дээр текст домэйныг тохируулахын тулд BEGIN арга хэмжээг нэмээрэй .


BEGIN {TEXTDOMAIN = "myprog"}

Энэ нь gawk таны програмтай холбоотой .mo файлыг олох боломжийг олгодог. Энэ алхамгүйгээр gawk нь мессеж текст домэйныг ашигладаг бөгөөд энэ нь таны програмд ​​зориулж орчуулаагүй байж магадгүй юм.

2.

Дээд зэрэглэлийн доогуур зураастай байх ёстой бүх тэмдэгтүүдийг тэмдэглэ.

3.

Шаардлагатай бол dcgettext () болон / эсвэл bindtextdomain () функцуудыг өөрийн програмд ​​ашиглах хэрэгтэй.

4.

Өөрийн програмыг ажиллуулахын тулд .po файлыг үүсгэх --gen-po -f myprog.awk> myprog.po ажиллуулна.

5.

Тохирох орчуулгуудаа хангаж, тохирох .mo файлыг нээж, суулгах хэрэгтэй.

Олон улсын шинж чанаруудыг GAWK- д бүрэн дүүрэн тайлбарласан байгаа : Үр нөлөөтэй AWK програмчлал .

Posix нийцтэй байдал

Gawk- д зориулсан гол зорилго нь POSIX стандарттай нийцтэй байх бөгөөд UNIX-н хамгийн сүүлийн үеийн хувилбартай нийцтэй байх болно. Үүний тулд AWK номонд тайлбарлаагүй дараах хэрэглэгчдийг харагдахуйц функцуудтай хослуулсан боловч Bell лабораторийн хувилбаруудын нэг хэсэг бөгөөд POSIX стандартад байдаг.

BEGIN блокыг ажиллуулсны дараа, хэрэв argument мөрийг аргументийг онгойлгох үед командын мөрийн хувьсагчийн хуваарилалтыг гүйцэтгэнэ. Гэсэн хэдий ч, өмнөх даалгаврын хувьд ийм даалгавар нь ямар ч файлын нэрс өмнө гарч ирэх үед BEGIN блок ажиллуулахаас өмнө даалгавар гүйцэтгэх болно. Програмууд нь энэ функцээс хамаарч ирсэн. '' Өмнө нь өөрийн баримтыг тааруулахын тулд солигдсон бол, програмыг ажиллуулахаас өмнө хувьсагчуудыг оноож өгөх -v сонголтыг хуучин зан төлөв дээр тулгуурласан програмуудыг тохируулахын тулд нэмэгдсэн. (Энэ боломжийг Bell Лаборатори болон GNU хөгжүүлэгч хоёуланг нь тохиролцсон болно.)

Тодорхойлолтод зориулсан -W тохируулга нь POSIX стандартаас тогтдог.

Аргументыг боловсруулах үед, gawk нь "-" гэсэн тусгай тохируулгыг ашигладаг. Тохирох горимд энэ нь анхааруулах аргагүй боловч өөрөөр хэлбэл тодорхойгүй сонголтуудыг үл тоомсорлодог. Хэвийн үйл ажиллагаанд иймэрхүү нэмэлт өгөгдлүүдийг AWK программд шилжүүлэхээр дамжуулдаг.

AWK ном нь srand () -ийн буцах утга тодорхойлохгүй. POSIX стандарт нь санамсаргүй хэрэглээний дарааллыг хянах боломжийг олгодог. Тиймээс srand () нь одоогийн үрийг буцаана.

Бусад шинэ боломжууд нь: Олон -f сонголтуудыг ашиглах (MKS awk-ээс ); ENVIRON массив; \ a , ба \ v зугтах дараалал (анхандаа хийсэн ба Bell Лабораторийн хувилбарт буцаж очно); Тойргийн () болон лабораторийн ( хувилбар) функцууд (built-in functions); printf дээр ANSI C хувиргах тодорхойлолтууд (Bell Лаборатори хувилбарт эхлээд).

Түүхийн онцлогууд

Өмнөх түүхэн AWK хэрэгжүүлэлтийн хоёр онцлог байдаг. Нэгдүгээрт, урт () функц нь зөвхөн аргументгүй төдийгүй, хаалтгүй функцийг дуудаж болно! Тиймээс,

a = урт # Ариун Алгас 60, Батман!

нь

a = урт ()
a = урт ($ 0)

Энэ шинж чанар POSIX стандартад "хуучирсан" гэж тэмдэглэгдсэн бөгөөд тушаалын мөрөнд --lint тодорхойлогдсон тохиолдолд түүний хэрэглээтэй холбоотой анхааруулга өгдөг .

Нөгөө шинж чанар нь үргэлжилсэн буюу завсарлагааны тайланг ашиглах , эсвэл давталтын хэрэглээг хоёуланг нь ашиглах явдал юм. Уламжлалт AWK-ийн хэрэгжилт нь дараагийн мэдэгдэлдээ адилхан хэрэглээг авч үзсэн. Хэрэв тохиргоо тодорхойлогдсон бол Gawk энэ хэрэглээг дэмждэг.

GNU Өргөтгөлүүд

Gawk нь POSIX awk- д хэд хэдэн өргөтгөлтэй байна. Эдгээрийг энэ хэсэгт тайлбарласан болно. Энд дурдагдсан бүх өргөтгөлүүд нь -traditional сонголтоор gawk- ийг ашиглан идэвхгүй болгож болно.

PASSIX-ийн хувьд дараах боломжууд байдаггүй.

*

-f сонголтоор нэрлэгдсэн файлуудын замыг хайх ажиллагаа байхгүй. Тиймээс AWKPATH орчны хувьсагч нь онцгой биш юм.

*

\ X зугтах дараалал. ( Функц - идэвхгүй - .

*

Fflush () функц. ( Функц - идэвхгүй - .

*

Дараагийн мөрүүдийг үргэлжлүүлэх боломжтой юу? болон :. ( Функц - идэвхгүй - .

*

AWK хөтөлбөр дэхь арван болон арван зургаатын тогтмол.

*

ARGIND , BINMODE , ERRNO , LINT , RT болон TEXTDOMAIN хувьсагчид нь тусгай бус юм.

*

IGNORECASE хувьсагч ба түүний гаж нөлөө нь боломжгүй.

*

FIELDWIDTHS хувьсагч болон тогтмол өргөнтэй талбар хуваагдана.

*

PROCINFO массив байхгүй байна.

*

RS- г ердийн илэрхийлэл болгон ашиглах.

*

I / O дахин чиглүүлэлт хийх боломжтой тусгай файлын нэрийг танихгүй.

*

| & Operator нь хамтран ажиллах процесс үүсгэдэг.

*

Хувьсагч тэмдэгтүүд нь null мөрийг ашиглан FS- ийн утга болон хуваагдлын гуравдах аргумент болгон хуваах чадвар юм.

*

Хаалттай () функцийн нэмэлт хоёрдахь аргумент.

*

Тоглолт () функцэд нэмэлт гуравдахь нэмэлт аргумент байна.

*

Printf ба sprintf () бүхий байрлалыг тодорхойлох чадвартай.

*

Багцын бүх агуулгыг устгахын тулд устгах массивыг ашиглах.

*

Дараагийн файлыг одоогийн оролтын файлыг боловсруулахаа больсон .

*

() , Assy () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () , эсвэл () , rshift () , strftime () , strtonum () () ба xor () функцууд.

*

Localizable мөрүүд.

*

Өргөтгөсөн () функцтэй динамикаар шинэ цуг бүтээгдсэн функцүүдийг нэмэх.

AWK ном нь ойролцоох () функцийн буцах утгыг тодорхойлохгүй. Gawk - ийн ойрхон () нь гаралтын файл эсвэл хоолойг хаах үед fclose (3), эсвэл pclose (3) - ийн утгыг буцаана. Энэ нь оролтын хоолойг хаах үед үйл явцын гарах статусыг буцаана. Өгөгдсөн файл, хоолой, эсвэл процесс дахин чиглүүлэлт хийгдээгүй тохиолдолд буцах утга -1 болно.

-traditional тохируулгатай gawk -ийг ажиллуулахад, -F тохируулгад fs нэмэлт өгөгдөл бол `t '' бол FS нь tab тэмдэгт тохируулагдсан байна. Бичиж буй gawk -F \ t ... нь зөвхөн `` t '' гэж илгээгддэг бөгөөд " -t сонголтоор \ t" -г дамжуулдаггүй. Энэ бол маш муухай тусгай тохиолдол учраас энэ нь анхдагч зан чанар биш юм. Хэрэв факс тодорхойлогдсон бол энэ үйлдэл нь бас тохиолддоггүй. Салбарын тусгаарлагч болгон үнэхээр tab-ыг авахын тулд, нэг quote: gawk -F '\ t' ...

Бусад тушаалууд : wait , lp , complete , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , free , lpr , execl , fdisk , хэн , iwconfig , ifconfig , vgdisplay , нээлттэй , lsmod , ntohs , mailq , kill , wtmp