Тушаал, синтакс ба жишээнүүд
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; хэвлэх тоо; } 'Энэ нь эгнээний бүх элементүүдийн нийлбэрийг хэвлэнэ.
Агуудын мэдэгдлийг элементүүдтэй хослуулдаг.