AWK тушаалууд ба скриптүүдийг хэрхэн бичих

Тушаал, синтакс ба жишээнүүд

Awk команд нь текст файлуудыг боловсруулах, задлан шинжлэх хүчирхэг арга юм - ялангуяа мөрүүд (баганууд) болон багануудаар зохион байгуулагдсан өгөгдлийн файлууд юм.

Энгийн awk тушаалуудыг тушаалын мөрөөс ажиллуулж болно. Илүү нарийн төвөгтэй даалгаврууд нь файл руу (awk скрипт гэж нэрлэгддэг) awk програмууд бичсэн байх ёстой.

Awk тушаалын үндсэн хэлбэр нь иймэрхүү байна:

awk 'pattern {action}' оролтын-файл> гаралтын файл

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

awk '{print $ 5}' table1.txt> output1.txt

Энэ мэдэгдэл нь мөр бүрийн 5 баганын элементийг аваад гаралтын файл "output.txt" гэсэн мөрөөр бичдэг. '$ 4' хувьсагч нь хоёр дахь баганатай холбоотой. Үүний нэгэн адил та $ 1, $ 2, $ 3 гэх мэт эхний, хоёр, гурав дахь баганад хандаж болно. Анхдагч багана нь зай эсвэл табуудаар (цагаан зай гэж нэрлэгддэг) зайгаар тусгаарлагдсан гэж үзнэ. Тэгэхээр оролтын файл "table1.txt" эдгээр мөрүүдийг агуулна:

7,90 $ 7,90 4, Lady Gaga, Гарчиг 118, Үнэ $ 7.30 5, Жонни Бэлэн, Гарчиг 482, Үнэ $ 6.50 6, Элвис Пресли, Гарчиг 335, Үнэ $ 7.30 7, Жон Леннон, Гарчиг 271, Үнэ $ 7.90 8, Майкл Жексон, Гарчиг 373, Үнэ $ 5.50

Дараа нь дараах тушаалыг гаралтын файл "output1.txt" уруу бичих болно:

545, 723, 610, 118, 482, 335, 271, 373,

Хэрэв багана тусгаарлагч нь зай эсвэл табуудаас өөр зүйл юм бол таслал гэх мэтийг та дараах байдлаар илэрхийлж болно:

awk -F, '{print $ 3}' table1.txt> output1.txt

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

Гарчиг 545 Гарчиг 723 Гарчиг 610 Гарчиг 118 Гарчиг 482 Гарчиг 335 Гарчиг 271 Гарчиг 373

Буржгар хаалтанд ('{', '}') илэрхийллийн жагсаалтыг блок гэж нэрлэдэг. Хэрвээ та блокийн өмнө нөхцөлт илэрхийллийг тавивал блок доторхи мэдэгдэл зөвхөн нөхцөл байдал үнэн бол гүйцэтгэнэ.

awk '$ 7 == "\ $ 7.30" {print $ 3}' table1.txt

Энэ тохиолдолд нөхцөл нь $ 7 == "\ $ 7.30" бөгөөд 7-р баганад буй элемент нь $ 7.30 -тай тэнцүү гэсэн үг юм. Долларын тэмдгийн урд талын хажуугийн хөндлөнгийн систем нь $ 7-ийг хувьсагч болгон хувиргахаас сэргийлж долларын тэмдгийг шууд авдаг.

Иймэрхүү мэдэгдэл нь баганын 7-р баганын $ 7.30-тай 3-р багана дахь элементийг хэвлэнэ.

Та мөн нөхцөл байдал болгон тогтмол илэрхийллийг ашиглаж болно. Жишээлбэл:

awk '/ 30 / {print $ 3}' table1.txt

Хоёр зүсэлтийн хоорондох тэмдэгт ('/') нь тогтмол илэрхийлэл юм. Энэ тохиолдолд энэ нь зүгээр л "30" гэсэн тэмдэгт юм. Энэ мөр нь "30" гэсэн мөрийг агуулдаг бол уг мөр нь тухайн мөрийн 3-р баганад элементийг оруулдаг. Дээрх жишээний гаралт нь:

Timberlake, Gaga, Presley,

Хэрвээ хүснэгтийн элементүүд нь тоонууд нь энэ жишээнд байгаа шиг тооцооллыг ажиллуулдаг бол:

awk '{print ($ 2 * $ 3) + $ 7}'

Одоогийн мөрийн элементүүдэд ($ 1, $ 2 гэх мэт) элементүүдэд хандах хувьсагчидаас гадна $ 0 хувьсагч нь бүрэн мөр (шугам), мөн талбарын тоонд ордог NF хувьсагчийг зааж өгдөг.

Та мөн энэ жишээнд байгаа шинэ хувьсагчдыг тодорхойлж болно:

awk '{нийл = 0; for (col = 1; col <= NF; col ++) нийлбэр + = $ col; хэвлэх тоо; } '

Энэ нь эгнээний бүх элементүүдийн нийлбэрийг хэвлэнэ.

Агуудын мэдэгдлийг элементүүдтэй хослуулдаг.