Learn Linux Command - gawk

სახელი

gawk - ნიმუში სკანირება და დამუშავება ენაზე

სინოფსისი

gawk [POSIX ან GNU სტილის პარამეტრები] -f პროგრამის ფაილი [ - ] ფაილი ...
gawk [POSIX ან GNU სტილის პარამეტრები] [ - ] პროგრამა ტექსტური ფაილი ...

pgawk [POSIX ან GNU სტილის პარამეტრები] -f პროგრამის ფაილი [ - ] ფაილი ...
pgawk [POSIX ან GNU სტილის პარამეტრები] [ - ] პროგრამა ტექსტური ფაილი ...

აღწერა

Gawk არის GNU პროექტის განხორციელება AWK პროგრამირების ენაზე. იგი შეესაბამება ენის განსაზღვრას POSIX 1003.2 ბრძანების ენა და საშუალებების სტანდარტი. ეს ვერსია, თავის მხრივ, ეფუძნება აღწერა AWK პროგრამირების ენაზე Aho, Kernighan და Weinberger, დამატებითი ფუნქციები ნაპოვნი სისტემის V გამოშვების 4 ვერსია UNIX awk . Gawk ასევე უზრუნველყოფს ბოლოდროინდელ Bell ლაბორატორიები awk გაგრძელება, და რაოდენობის GNU სპეციფიკური გაგრძელება.

Pgawk არის Gawk- ის პროფილიანი ვერსია. ეს არის იდენტური ყველა გზა gawk , გარდა პროგრამების აწარმოებს უფრო ნელა, და ის ავტომატურად აწარმოებს აღსრულების ნახვა ფაილი awkprof.out როდესაც გაკეთდა. იხილეთ - პროფილების ვარიანტი, ქვემოთ.

ბრძანების ხაზი შედგება AWK პროგრამის ტექსტით (თუ არ არის მიწოდებული -f ან - ფაილების პარამეტრები) და ღირებულებები ხელმისაწვდომი ARGC- სა და ARGV- ში წინასწარ განსაზღვრულ AWK ცვლადებზე.

ვარიანტი ფორმატი

Gawk პარამეტრების შეიძლება იყოს ტრადიციული POSIX ერთი წერილი პარამეტრები ან GNU სტილი ხანგრძლივი პარამეტრები. POSIX პარამეტრები იწყება ერთი `` - "', ხოლო ხანგრძლივი პარამეტრები იწყება` `-". გრძელი ვარიანტები უზრუნველყოფილია როგორც GNU- სპეციფიკური მახასიათებლებისთვის, ასევე POSIX- ისთვის გათვალისწინებული ფუნქციებისათვის.

POSIX სტანდარტის შემდეგ, gawk- specific პარამეტრები მიეწოდება არგუმენტებს -W ვარიანტი. Multiple -W პარამეტრები შეიძლება მიეწოდოს თითოეული W ვარიანტი აქვს შესაბამისი ხანგრძლივი ვარიანტი, როგორც დეტალურად ქვემოთ. არგუმენტები ხანგრძლივი ვარიანტები ან შეუერთდნენ პარამეტრს = ნიშანი, არ ჩარევა სივრცეები, ან ისინი შეიძლება გათვალისწინებული მომდევნო ბრძანების არგუმენტი. გრძელი ვარიანტები შეიძლება შემოკლდეს, რადგან აბრევიატურა რჩება უნიკალურია.

პარამეტრები

Gawk იღებს შემდეგ ვარიანტებს, ჩამოთვლილი ალფავიტის მიხედვით.

-F fs

field-separator fs გამოიყენეთ fs შეყვანის საველე გამყოფი ( FS წინასწარ განსაზღვრული ცვლადის ღირებულება).

-v var = val

--assign var = val მიუთითეთ ღირებულების val ცვლადი var , სანამ შესრულების პროგრამა იწყება. ასეთი ცვლადი ღირებულებები ხელმისაწვდომია AWK პროგრამის ბლოკზე.

-f პროგრამის ფაილი

- ფაილის პროგრამის ფაილი წაიკითხეთ AWK პროგრამის წყარო ფაილის პროგრამის ფაილიდან , ნაცვლად პირველი ბრძანების არგუმენტიდან. შეიძლება გამოყენებულ იქნას მრავალი -ფ (ან - ფაილების ) პარამეტრები.

-mf NNN

-mr NNN Set სხვადასხვა მეხსიერების ლიმიტები NNN მნიშვნელობით. დროშის მაქსიმალური რაოდენობა განსაზღვრავს და დროში აწესებს მაქსიმალური ჩანაწერის ზომა. ეს ორი დროშა და -m ვარიანტი არის Bell ლაბორატორიები კვლევის ვერსია UNIX awk . ისინი იგნორირებულია gawk , რადგან gawk არ აქვს წინასწარ განსაზღვრული ლიმიტები.

-W კომპატი

-W ტრადიციული

- კომბოსტო

- ადაპტირება თავსებადობის რეჟიმში. თავსებადობის რეჟიმში, gawk იქცევა იდენტურად UNIX awk ; არცერთი გლობალური გაფართოება არ არის აღიარებული. ამ ვარიანტის სხვა ფორმებზე - ტრადიციული გამოყენება სასურველია. იხილეთ დამატებითი ინფორმაციისთვის იხილეთ GNU Extensions .

-W კოპირება

-W საავტორო უფლებები

- copyleft

- კოპირება ბეჭდვის მოკლე ვერსია GNU საავტორო საინფორმაციო გაგზავნა სტანდარტული გამომავალი და გასასვლელი წარმატებით.

-W ნაგავსაყრელი ცვლადები [ = ფაილი ]

- dump-variables [ = file ] ბეჭდვის დახარისხებული სია გლობალური ცვლადები, მათი ტიპის და საბოლოო ღირებულებების ფაილი . თუ ფაილი არ არის გათვალისწინებული, gawk იყენებს ფაილის სახელს awkvars.out მიმდინარე დირექტორიაში.

ყველა გლობალური ცვლადის სიაში არის კარგი გზა თქვენს პროგრამებში ტიპოგრაფიული შეცდომების მოსაძებნად. თქვენ ასევე გამოიყენებთ ამ ვარიანტს, თუ თქვენ გაქვთ დიდი პროგრამა ბევრი ფუნქციით, და დარწმუნებული უნდა იყოს, რომ თქვენი ფუნქციები არ იწვევდა გლობალურ ცვლადებს, რომლითაც გულისხმობ ადგილობრივ. (ეს განსაკუთრებით ადვილი შეცდომაა, რათა მარტივი ცვლადი სახელები, როგორიცაა i , j და ა.შ.).

-W დახმარება

-W გამოყენება

--help

- დაბეჭდვა დაბეჭდეთ სტანდარტული გამომავალი ვარიანტების შედარებით მოკლე შინაარსი. ( GNU Coding სტანდარტების მიხედვით , ეს პარამეტრები იწვევს დაუყოვნებლივ, წარმატებულ გასასვლელს.)

-W lint [ = ფატალური ]

- lint [ = ფატალური ] უზრუნველყოს გაფრთხილებები შესახებ აშენებს, რომლებიც საეჭვოდ ან არასამთავრობო პორტატული სხვაგადასახადო შესრულების. ფატალური არჩევითი არგუმენტით, ცრემლსადენი გაფრთხილებები გახდება ფატალური შეცდომები. ეს შეიძლება იყოს მკვეთრი, მაგრამ მისი გამოყენება აუცილებლად წაახალისებს სუფთა AWK პროგრამების განვითარებას.

-W lint- ძველი

- ძველ დროში გაფრთხილებები ააშენეთ შესახებ, რომელიც არ არის პორტირებული Unix awk- ის თავდაპირველი ვერსიისთვის.

-W გენ-პო

--gen-po სკანირების და გააქტიურება AWK პროგრამა და გენერირება GNU .po ფორმატის ფაილი სტანდარტული გამომავალი ერთად ჩანაწერები ყველა localizable strings პროგრამა. პროგრამა თავად არ არის შესრულებული. იხილეთ GNU gettext განაწილება დამატებითი ინფორმაციისთვის.

-W არაა-ათობითი მონაცემები

--non-decimal-data შეყვანის მონაცემებში octal და hexadecimal მნიშვნელობის აღიარება. გამოიყენეთ ეს ვარიანტი დიდი სიფრთხილით!

-W posix

--posix ეს გახდება თავსებადობის რეჟიმი, შემდეგი დამატებითი შეზღუდვები:

*

\ x გაქცევის sequences არ არის აღიარებული.

*

მხოლოდ სივრცისა და ჩანართის სახით, როგორც საველე გამყოფი, FS არის ერთ სივრცეში, ახალი ხაზი არ არის.

*

ხაზის გაგრძელება ვერ გაგრძელდება ? და :

*

სინონიმი func სიტყვის ფუნქციისთვის არ არის აღიარებული.

*

ოპერატორები ** და ** = არ შეიძლება გამოყენებულ იქნას ^ და ^ = ადგილას.

*

Fflush () ფუნქცია არ არის ხელმისაწვდომი.

-W პროფილი [ = prof_file ]

--profile [ = prof_file ] პროფილების მონაცემების გაგზავნა prof_file- ს . ნაგულისხმევი არის awkprof.out . როდესაც გალაკთან ერთად აწარმოებს, პროფილი მხოლოდ პროგრამის "საკმაოდ ნაბეჭდი" ვერსიაა. როდესაც pgawk- ით აწარმოებს, პროფილი შეიცავს თითოეული განცხადების შესრულების რაოდენობას პროგრამის მარცხენა მარცხნივ და ფუნქციის ზარის რიცხვი თითოეული მომხმარებლის განსაზღვრული ფუნქციისთვის.

-W ხელახლა ინტერვალი

- ინტერვალის ინტერვალი ინტერვალის გამოხატვის გამოყენება რეგულარული გამოხატვის შესატყვისი (იხ. რეგულარული გამოხატვა , ქვემოთ). ინტერვალის გამოხატვა არ იყო ტრადიციულად ხელმისაწვდომი AWK ენაზე. POSIX სტანდარტი დასძინა მათ, რომ awk და egrep შეესაბამება ერთმანეთს. თუმცა მათი გამოყენება სავარაუდოდ ძველი AWK პროგრამების შესვენებაა, ამიტომ მხოლოდ Gawk უზრუნველყოფს მათ, თუ ისინი მოითხოვენ ამ ვარიანტს, ან როდესაც მითითებულია.

-W კოდის პროგრამა-ტექსტი

- პროგრამა პროგრამის ტექსტი გამოიყენეთ პროგრამა-ტექსტი, როგორც AWK პროგრამის კოდი. ეს პარამეტრი საშუალებას იძლევა ბიბლიოთეკის ფუნქციების მარტივი ინტერმაქსირება (გამოყენებული იყოს -f და --file პარამეტრების მეშვეობით) ბრძანების სტრიქონის კოდის გამოყენებით. იგი განკუთვნილია ძირითადად საშუალო და დიდი AWK პროგრამებში გამოყენებული shell სკრიპტები.

-W ვერსია

- ვერსიის ბეჭდვის ვერსია ინფორმაცია ამ კონკრეტული ასლი gawk სტანდარტული გამომავალი. ეს სასარგებლოა იმისთვის, რომ გაეცანით თუ არა სისტემაში არსებული Gawk- ის ამჟამინდელი ასლი დღემდე თავისუფალი პროგრამული უზრუნველყოფის ფონდის განაწილებასთან დაკავშირებით. ეს ასევე სასარგებლოა შეცდომების გაშუქებისას. ( GNU Coding სტანდარტების მიხედვით , ეს პარამეტრები იწვევს დაუყოვნებლივ, წარმატებულ გასასვლელს.)

- სიგნალის დასრულების პარამეტრები. ეს სასარგებლოა იმისთვის, რომ შემდგომ არგუმენტებს AWK პროგრამისთვის მიეცეს `` - ''. ეს ძირითადად შეესაბამება სხვა POSIX პროგრამების მიერ გამოყენებული არგუმენტის დამუშავების კონცეფციას.

თავსებადობის რეჟიმში, ნებისმიერი სხვა ვარიანტები არასწორია, მაგრამ სხვაგვარად იგნორირებულია. ნორმალურ ოპერაციებში, სანამ პროგრამის ტექსტი მიეწოდება, უცნობი პარამეტრები გადაეცემა AWK პროგრამის ARGV მასივში გადამუშავების პროცესში. ეს განსაკუთრებით სასარგებლოა AWK პროგრამებისთვის, `` #! "'' მეშვეობით შესრულებული თარჯიმნის მექანიზმი.

AWK პროგრამის განხორციელება

AWK პროგრამა შედგება ნიმუში-სამოქმედო განცხადებებისა და სურვილისამებრ ფუნქციის განსაზღვრის რიგით.

ნიმუში { action statements }

ფუნქციის სახელი ( პარამეტრების სია ) { განცხადებები }

Gawk პირველი კითხულობს პროგრამის წყაროს პროგრამულ ფაილში (s) თუ მითითებულია, არგუმენტებიდან - source , ან პირველი არჩევითი არგუმენტიდან ბრძანებათა სტრიქონიდან. -f და --source პარამეტრები შეიძლება გამოყენებულ იქნეს მრავალჯერ ბრძანებათა ზოლზე. Gawk ნათქვამია პროგრამის ტექსტი, თითქოს ყველა პროგრამის ფაილი და ბრძანების ხაზი ტექსტები conconenated ერთად. ეს სასარგებლოა AWK ფუნქციების ბიბლიოთეკების მშენებლობისათვის, ყოველგვარი ახალი AWK პროგრამით გათვალისწინების გარეშე. იგი ასევე უზრუნველყოფს უნარი შეურიოთ ბიბლიოთეკის ფუნქციები ბრძანების პროგრამები.

გარემოს ცვლადი AWKPATH განსაზღვრავს ძებნის გზას გამოიყენოს, როდესაც წყაროს ფაილები დასახელებულია -f პარამეტრით. თუ ეს ცვლადი არ არსებობს, ნაგულისხმევი გზა არის ".: / Usr / local / share / awk" . (ფაქტობრივი დირექტორია შეიძლება განსხვავდებოდეს, იმის მიხედვით, თუ როგორ შეიქმნა და დამონტაჟდა GAWK ). თუ F -ის პარამეტრში მოცემული ფაილის სახელი შეიცავს `` / '' სიმბოლოს, არ არის შესრულებული პლანეტის ძიება.

Gawk ახორციელებს AWK პროგრამებს შემდეგ ბრძანებაში. პირველ რიგში, შესრულებულია ყველა ვარიანტის მითითება -v პარამეტრის მეშვეობით. შემდეგი, gawk აერთიანებს პროგრამის შიდა ფორმა. შემდეგ, gawk ახორციელებს კოდს BEGIN ბლოკ (ებ) ში (ასეთის არსებობის შემთხვევაში) და შემდეგ აგრძელებს ARGV მასივში დასახელებულ თითოეულ ფაილს. თუ ბრძანებათა სტრიქონის ფაილები არ არის, gawk- ი სტანდარტული შეყვანის ნათქვამია.

იმ შემთხვევაში, თუ ბრძანებათა სტრიქონის ფორმას აქვს ფორმა var = Val, იგი განიხილება, როგორც ცვლადი დავალება. ცვლადი var მიენიჭება ღირებულება val . (ეს მოხდება მას შემდეგ, რაც ნებისმიერი დაბლოკვა ბლოკ (ებ) ი აწარმოებს.) Command line ცვლადი დავალება სასარგებლოა დინამიურად მინიჭებული მნიშვნელობები ცვლადების AWK- ის გამოყენებისას, თუ როგორ შეყვანილი იქნება შეყვანილი ველი და ჩანაწერები. ასევე სასარგებლოა სახელმწიფო კონტროლისთვის, თუ ერთია საჭირო მონაცემების გადატანა ერთიან ფაილზე.

თუ ARGV- ის ცალკეული ელემენტის ღირებულება ცარიელია ( "" ), მასზე გაყინულია .

თითოეული ჩანაწერის შეყვანა, gawk ტესტების თუ იგი ემთხვევა ნებისმიერი ნიმუში AWK პროგრამა. თითოეული ნიმუში, რომ ჩანაწერი მატჩები, ასოცირებული ქმედება შესრულებულია. ნიმუშები ტესტირება ხდება იმ შემთხვევაში, თუ ისინი მოხდება პროგრამაში.

საბოლოოდ, მას შემდეგ, რაც ყველა შეყვანის ამოიწურება, gawk ახორციელებს კოდის END ბლოკს (s) (ასეთის არსებობის შემთხვევაში).

ცვლადები, ჩანაწერები და სფეროები

AWK ცვლადები დინამიურია; ისინი არსებობენ, როდესაც ისინი პირველად იყენებენ. მათი ღირებულებები ან მცურავი პუნქტიანი ნომრები ან სიმები, ან ორივე, დამოკიდებულია იმაზე, თუ როგორ გამოიყენება ისინი. AWK ასევე აქვს ერთი განზომილებიანი მასივები; მრავალნაირი ზომის მასივები შეიძლება მოდელირებული იყოს. რამდენიმე წინასწარ განსაზღვრული ცვლადი დადგენილია როგორც პროგრამა გადის; ეს აღწერილია როგორც საჭიროა და შეჯამებულია ქვემოთ.

ჩანაწერები

ჩვეულებრივ, ჩანაწერები გამოყოფილია ახალი ხაზებით. თქვენ შეგიძლიათ აკონტროლოთ როგორ აწესრიგებს ჩანაწერები ინტეგრირებული ცვლადის RS- სთვის . თუ RS არის ერთი ხასიათი, რომ ხასიათი გამოყოფს ჩანაწერებს. წინააღმდეგ შემთხვევაში, RS რეგულარული გამოხატულებაა. ტექსტის შეყვანა, რომელიც შეესაბამება ამ რეგულარული გამოხატვის მონახაზს. თუმცა, თავსებადობის რეჟიმში, მისი სიმებიანი ღირებულების პირველი სიმბოლო გამოიყენება ჩანაწერების გამიჯვნისთვის. თუ RS არის მითითებული null string, მაშინ ჩანაწერები გამოყოფილი ცარიელი ხაზები. როდესაც RS არის მითითებული null string, ახალი ხაზი ხასიათი ყოველთვის მოქმედებს როგორც საველე გამყოფი, გარდა იმისა, რაც ღირებულება FS შეიძლება ჰქონდეს.

სფეროები

როგორც თითოეული შეყვანის ჩანაწერი წაკითხულია, gawk გაყოფილი ჩანაწერი შევიდა სფეროებში , გამოყენებით ღირებულება FS ცვლადი, როგორც სფეროში გამყოფი. თუ FS ერთი სიმბოლოა, სფეროები გამოყოფილია ამ ხასიათის მიხედვით. თუ FS არის null string, მაშინ თითოეული პერსონაჟი ხდება ცალკე სფეროში. წინააღმდეგ შემთხვევაში, FS სავარაუდოდ სრული რეგულარული გამოხატულებაა. სპეციალურ შემთხვევაში, FS არის ერთი სივრცე, სფეროები გამოყოფილია სივრცეების და / ან ჩანართებით ან / და ახალი ხაზებით. (მაგრამ იხ. განხილვა - სიმბოლო , ქვემოთ). შენიშვნა: IGNORECASE- ის მნიშვნელობა (იხ. ქვემოთ) ასევე გავლენას ახდენს სფეროების გაყოფა, როდესაც FS არის რეგულარული გამოხატვა და როგორ ხდება ჩანაწერების გამოყოფა, როდესაც RS რეგულარული გამოხატულებაა.

იმ შემთხვევაში, თუ FIELDWIDTHS ცვლადი დადგენილია ნომრების სივრცეში, თითოეული ველი სავარაუდოა, რომ ფიქსირებული სიგანეა და gawk- ის გათიშვა აღწერილი სიგანეების გამოყენებით. FS- ის ღირებულება იგნორირებულია. FS- სთვის ახალი ღირებულების მინიჭება FIELDWIDTHS- ის გამოყენება და აღადგენს სტანდარტულ ქცევას.

შეყვანის ჩანაწერის თითოეულ სფეროში შეიძლება მიეთითოს მისი პოზიცია, $ 1 , $ 2 და ა.შ. $ 0 არის მთელი ჩანაწერი. სფეროები არ უნდა იყოს მითითებული მუდმივები:

n = 5
ბეჭდვა $ n

იბეჭდება მეხუთე ველი შეყვანის ჩანაწერში.

ცვლადი NF არის დაყენებული ჩანაწერების მთლიანი რაოდენობა.

არარსებობის სფეროები (ანუ მინდვრები NF- ის შემდეგ ) წარმოადგენენ null-string. თუმცა, არარსებობის სფეროში (მაგალითად, $ NF + 2) = 5 ) ზრდის NF- ს ღირებულებას, ქმნის ნებისმიერი ჩარევის დებულებას null string- ს, როგორც მათი ღირებულება და იწვევს $ 0- ის მნიშვნელობას recomputed სფეროები გამოყოფილია OFS- ის ღირებულებით. უარყოფით დათვლილ სფეროებზე მიუთითებს ფატალური შეცდომა. NF- ის შემცირება განაპირობებს ახალი ღირებულების გასავრცელებლად არსებული სფეროების მნიშვნელობებს, და recomputed $ 0- ის ღირებულებას, რომელთა დანაწევრება ხდება OFS- ის ღირებულებით.

არსებული სფეროს ღირებულების მინიჭება იწვევს მთელს რეკორდს, რომელიც რეკონსტრუქციისას აღირიცხება $ 0-ით . ანალოგიურად, $ 0- ის მნიშვნელობის მინიჭება გამოიწვევს რეკორდსს, რათა შეიქმნას ახალი ღირებულებები სფეროებში.

ჩამონტაჟებული ცვლადები

Gawk- ის ინტეგრირებული ცვლადებია:

ARGC

ბრძანების სტრიქონის არგუმენტების რაოდენობა (არ შეიცავს Gawk- ს , ან პროგრამის წყაროს).

ARGIND

მიმდინარე ფაილის მიმდინარეობის პროცესი ARGV- ში .

ARGV

Array ბრძანების ხაზი არგუმენტები. მასივი არის ინდექსირებული 0-დან ARGC - 1. დინამიურად შეცვლის შინაარსი ARGV- ს შეუძლია გააკონტროლოს ფაილი გამოყენებული მონაცემები.

BINMODE

არა POSIX სისტემებში, განსაზღვრავს "ორობითი" რეჟიმის გამოყენების ყველა ფაილი I / O. 1, 2, ან 3 რიცხვითი მნიშვნელობები, მიუთითეთ, რომ შეყვანის ფაილი, გამომავალი ფაილი ან ყველა ფაილი, შესაბამისად, უნდა გამოვიყენოთ ორობითი I / O. "R" ან "w" სიმებიანი მნიშვნელობები განსაზღვრავს, რომ შეყვანის ფაილი ან გამომავალი ფაილი, შესაბამისად, უნდა გამოვიყენოთ ორობითი I / O. "Rw" ან "wr" სიმებიანი მნიშვნელობები განსაზღვრავს, რომ ყველა ფაილი უნდა გამოვიყენოთ ორობითი I / O. ნებისმიერი სხვა სიმებიანი ღირებულება განიხილება, როგორც "rw" , მაგრამ ქმნის გამაფრთხილებელ შეტყობინებას.

CONVFMT

კონვერტაციის ფორმატის ნომრები, "% .6g" , ნაგულისხმევია.

ENVIRON

მასივი შეიცავს მიმდინარე გარემოების ღირებულებებს. მასივი განსაზღვრავს გარემოს ცვლადების მიერ, თითოეული ელემენტი, რომელიც ამ ცვლადის ღირებულებაა (მაგალითად, ENVIRON ["მთავარი"] შეიძლება იყოს / home / arnold ). ამ მასივის შეცვლა გავლენას არ ახდენს იმ პროგრამების მიერ, რომლებსაც იხილავენ პროგრამები, რომლებიც გადანაწილებას გადანაწილებით ან სისტემის () ფუნქციით ხდებიან.

ERRNO

თუ სისტემა შეცდომა ხდება ან გადამისამართების გაკეთება, რომელიც მიიღებს getline- ს , ან მჭიდრო () დროს , მაშინ ERRNO შეიცავს სიას, რომელიც აღწერს შეცდომას. ღირებულება ექვემდებარება თარგმანს არა ინგლისური ენის ადგილობრივ ენაზე.

FIELDWIDTHS

თეთრი სივრცის გამოყოფილი სიაში fieldwidths. როდესაც მითითებული, gawk parses შეყვანის შევიდა სფეროებში ფიქსირებული სიგანე, ნაცვლად გამოყენებით ღირებულება FS ცვლადი, როგორც სფეროში გამყოფი.

ფაილის სახელი

მიმდინარე შეყვანის ფაილის სახელი. თუ ფაილების მითითება არ არის მითითებული, FILENAME- ის ღირებულება `` - ''. თუმცა, FILENAME არ არის განსაზღვრული BEGIN ბლოკში (თუ არ მიიღებთ getline- ს მიერ ).

FNR

შემავალი ჩანაწერის ნომერი მიმდინარე შეყვანის ფაილში.

FS

შეყვანის საველე გამყოფი, ჩვეულებრივი სივრცე. იხილეთ სფეროები , ზემოთ.

იგნორირება

აკონტროლებს ყველა რეგულარული გამოხატვისა და სიმებიანი ოპერაციების შემთხვევაში მგრძნობიარობას. თუ IGNORECASE- ს აქვს ნულოვანი მნიშვნელობა, მაშინ სიმებიანი შედარებები და ნიმუში შეესაბამება წესებს, საველე გაყოფა FS- ს , RS- სთან ერთად , რეგულარული გამოხატვა, ~ და ! ~ , და gensub () , gsub () , ინდექსი () , მატჩი () , გაყოფილი () და ქვე () ჩაშენებული ფუნქციები ყველა იგნორირებას, როდესაც რეგულარულად გამოხატავს ოპერაციებს. შენიშვნა: Array subpting არ არის დაზარალებული, არც asort () ფუნქცია.

ამრიგად, თუ IGNORECASE არ არის ტოლი zero, / aB / matches ყველა სტრიქონები "ab" , "aB" , "AB" და "AB" . ყველა AWK ცვლადის მსგავსად, IGNORECASE- ის საწყის ღირებულება ნულოვანია, ამიტომ ყველა რეგულარული გამოხატვა და სიმებიანი ოპერაციები, ჩვეულებრივ, სენსიტიურია. Unix- ს ფარგლებში, საქმის იგნორირებისას გამოიყენება სრული ISO 8859-1 ლათინური-1 სიმბოლო.

LINT

უზრუნველყოფს AlK პროგრამის ფარგლებში --lint- ის დინამიურ კონტროლს. როდესაც ჭეშმარიტი, gawk ბეჭდავს lint გაფრთხილება. როდესაც ცრუ, ეს არ. სიკვდილის მნიშვნელობის მინიჭებისას "ფატალური" , წვივის გაფრთხილებები გახდება ფატალური შეცდომები, ზუსტად ისევე, როგორც - lint = ფატალური . ნებისმიერი სხვა ნამდვილი ღირებულება მხოლოდ ბეჭდავს გაფრთხილებას.

NF

მიმდინარე ჩანაწერის ჩანაწერებში არსებული ველები.

NR

აღრიცხვის ჩანაწერების საერთო რაოდენობა ჯერჯერობით ჩანს.

OFMT

გამომავალი ფორმატის ნომრები, "% .6g" , ნაგულისხმევია.

OFS

გამომავალი ველი გამყოფი, სივრცეში.

ORS

გამომავალი ჩანაწერის გამყოფი, როგორც წესი, ახალი ხაზი.

PROCINFO

ელემენტების ამ მასივი უზრუნველყოფს ხელმისაწვდომობის ინფორმაციას გაშვებული AWK პროგრამა. ზოგიერთ სისტემებში შეიძლება იყოს ელემენტების მასივი, "group1" მეშვეობით "ჯგუფი n " ზოგიერთი n , რომელიც არის რიგი დამატებითი ჯგუფების, რომ პროცესი. გამოიყენეთ ოპერატორში ამ ელემენტების შესამოწმებლად. გარანტირებულია შემდეგი ელემენტები:

PROCINFO ["მაგ."]

Getegid (2) სისტემის ზარის ღირებულება.

PROCINFO ["ეიდი"]

ბეთუდის (2) სისტემის ზარის ღირებულება.

PROCINFO ["FS"]

"FS", თუ FS- ის გაყოფა გადის , ან "FIELDWIDTHS", თუ საველე გაყოფა FIELDWIDTHS- ით მოქმედებს.

PROCINFO ["gid"]

გუგლის (2) სისტემის ზარის ღირებულება.

PROCINFO ["pgrpid"]

მიმდინარე პროცესის პროცესის ჯგუფის ID.

PROCINFO ["pid"]

მიმდინარე პროცესის პროცესი ID.

PROCINFO ["ppid"]

მშობლის პროცესი მიმდინარე პროცესის ID.

PROCINFO ["uid"]

(2) სისტემის ზარის ღირებულება.

RS

შეყვანის ჩანაწერის გამყოფი, როგორც წესი, ახალი ხაზი.

RT

ჩანაწერი Terminator. Gawk ადგენს RT- ს შეყვანის ტექსტს, რომელიც შეესაბამება RS- ს მიერ განსაზღვრულ ხასიათს ან რეგულარულ გამოხატვას.

RSTART

პირველი სიმბოლოების მაჩვენებელი მატჩის მიხედვით () ; 0 თუ მატჩი არ არის. (ეს გულისხმობს, რომ სიმბოლოები იწყება ერთში.)

RLENGTH

სიგრძის სიგრძე შესაბამისი მატჩი () ; -1 თუ არ ემთხვევა.

SUBSEP

ხასიათი გამოყენებულია მრავალრიცხოვანი აბონენტების მასივ ელემენტებში, "default " \ 034 .

TEXTDOMAIN

AWK პროგრამის ტექსტი დომენი; გამოყენებული იქნა პროგრამის სიმებიანი ლოკალიზებული თარგმანები.

კოლექტორები

მასივები იცვლება კვადრატულ ფრჩხილებში ( [ და ] ) შორის. თუ გამოხატულებაა გამოხატვის სია ( expr , expr ...), მაშინ მასივი არის სტრიქონი, რომელიც შედგება თითოეული გამოხატვის (სიმებიანი) თანხვედრაში , რომელიც SUBSEP ცვლადის ღირებულებით არის გამოყოფილი . ეს ობიექტი გამოიყენება სიმულაციური გამრავლებული მასივების სიმულაციისთვის. მაგალითად:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "hello, world \ n"

ანიჭებს სიას "hello, world \ n" ელემენტის x- ის ელემენტს, რომელიც ინდექსირებულია "A \ 034B \ 034C" . AWK- ში ყველა კოლექტორი ასოცირებულია, ანუ ინდექსირებული სიმებიანი ღირებულებით.

სპეციალურ ოპერატორს შეიძლება გამოყენებული იქნას, თუ რომელიმე ანაბეჭდის შემთხვევაში, თუ მასივი აქვს კონკრეტული მნიშვნელობის მქონე ინდექსის შემცველი.

თუ (array in array) ბეჭდვითი მასივი [val]

თუ მასივი მრავალჯერადი ხელსაწყოებს შეიცავს, გამოიყენეთ (i, j) მასივში .

მშენებლობაში შეიძლება გამოყენებულ იქნას მარყუჟისთვის ისრაელის ყველა ელემენტი.

ელემენტი შეიძლება წაიშალოს მასივიდან წაშლის განცხადებით. წაშლის განცხადება შეიძლება გამოყენებულ იქნას მასივის მთელი შინაარსის წაშლაზე, მხოლოდ მასივის სახელის დაკონკრეტების გარეშე.

ცვლადი ფერთა და კონვერტაციის

ცვლადები და სფეროები შეიძლება იყოს (მცურავი წერტილი) ციფრები, ან სიმები, ან ორივე. როგორ ცვლადის მნიშვნელობა ინტერპრეტირებულია მისი კონტექსტის მიხედვით. თუ რიცხვითი გამოხატვისას გამოყენებული იქნება, ეს რიცხვი განიხილება როგორც რიცხვი, თუ გამოიყენება სიმებიანი სტრიქონის სახით.

აიძულოს ცვლადი იყოს ნომრად, დაამატეთ მას 0; აიძულოს იგი განიხილება, როგორც სიმებიანი, concatenate იგი null სიმებიანი.

როდესაც სიმებიანი რიცხვი უნდა გარდაიქმნას რიცხვით, კონვერტაცია შესრულებულია strtod (3) გამოყენებით. რიცხვი კონვერტირებულია სიდიდის გამოყენებით CONVFMT- ის მნიშვნელობით, როგორც sprintf (3) ფორმატის სტრიქონი, ცვლადის რიცხვითი მნიშვნელობის მქონე არგუმენტით. თუმცა, მიუხედავად იმისა, რომ ყველა რიცხვი AWK- ში მცურავი პუნქტია, ინტეგრალური ღირებულებები ყოველთვის იცვლება რიცხვებით. ამდენად, მოცემული

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

ცვლადი B- ს აქვს "12" -ის სიმებიანი ღირებულება და არა "12.00" .

Gawk ასრულებს შედარებებს შემდეგნაირად: თუ ორი ცვლადი რიცხვია , ისინი რიცხობრივად შეესაბამება. თუ ერთი მნიშვნელობა რიცხვითია და სხვა აქვს სიმებიანი მნიშვნელობა, რომელიც არის "რიცხვითი სიმებიანი", მაშინ შედარებები ასევე გაკეთებულია რიცხვით. წინააღმდეგ შემთხვევაში, რიცხვითი მნიშვნელობა კონვერტირებულია სიმებიანი და სიმებიანი შედარება შესრულებულია. ორი სტრიქონი შედარებულია, რა თქმა უნდა, როგორც სიმები. გაითვალისწინეთ, რომ POSIX სტანდარტი ვრცელდება კონტექსტში "ციფრული სიმებიანი" "ყველგან, თუნდაც სიმებიანი მუდმივები. თუმცა, ეს აშკარად არასწორია და გალაკი ამას არ აკეთებს. (საბედნიეროდ, ეს არის დაფიქსირებული შემდეგი ვერსია სტანდარტული.)

გაითვალისწინეთ, რომ სიმებიანი მუდმივები, როგორიცაა "57" , არ არის რიცხვითი სიმები, ისინი სიმებიანი მუდმივები. "ციფრული სიმებიანი" იდეა ვრცელდება მხოლოდ სფეროების, მისაღებად შეყვანის, FILENAME , ARGV ელემენტების, ENVIRON ელემენტებისა და გაყოფის მიერ შექმნილი მასივის ელემენტებზე, რომლებიც რიცხვითი სიმებია. ძირითადი იდეა ის არის, რომ მომხმარებლის შეყვანის და მხოლოდ მომხმარებლის შეყვანის, რომ გამოიყურება რიცხვითი, უნდა განიხილებოდეს, რომ გზა.

Uninitialized ცვლადების რიცხვითი მნიშვნელობა 0 და სიმებიანი მნიშვნელობა "" (null ან empty, string).

Octal და Hexadecimal Constants

Gawk- ის ვერსიის 3.1 ვერსიიდან შეგიძლიათ გამოიყენოთ C-style octal და hexadecimal constants in AWK პროგრამის კოდი. მაგალითად, octal value 011 უდრის ათობითი 9 , და hexadecimal ღირებულება 0x11 ტოლია ათობითი 17.

სიმებიანი კონსტანტები

AWK- ში სიმებიანი მუდმივები არის ორმაგ შეთავაზებებს შორის "სიმბოლოების თანმიმდევრობები " . სიმებიდან, გარკვეული გაქცევის sequences აღიარებულია, როგორც C.

\\

ლიტერატურული backslash.

\ ა

"სიფრთხილე" ხასიათი; ჩვეულებრივ ASCII BEL ხასიათი.

\ b

backspace.

\ ვ

ფორმა-კვება.

\ n

ახალი ხაზი.

\ r

ვაგონების დაბრუნება.

\ t

ჰორიზონტალური ჩანართი.

\ v

ვერტიკალური ჩანართი.

\ x hex ციფრი

გმირი წარმოდგენილია ჰექსიდეციმალური რიცხვების სიგანე \ x შემდეგ . როგორც ANSIC- ში, ყველა შემდეგი ჰექსადეციალური ციფრი ითვლება გაქცევის თანმიმდევრობით. (ეს ფუნქცია უნდა გვითხრათ კომიტეტში ენის დიზაინის შესახებ). ეგ, \ x1B " არის ASCIIESC (escape) ხასიათი.

\ ddd

ოქტალური ციფრების 1-, 2-, ან 3 ციფრი თანმიმდევრობით წარმოდგენილი ხასიათი. მაგალითად, "\ 033" არის ASCII ESC (escape) ხასიათი.

\

ლიტერატურული ხასიათი .

გაქცევის თანმიმდევრობები შეიძლება გამოყენებულ იქნას მუდმივი რეგულარული გამოხატვის შიგნით (მაგალითად, / [\ t \ f \ n \ r \ v] / მატჩები თეთრების სიმბოლოები).

თავსებადობის რეჟიმში, ოქტალური და თექვსმეტობითი გაქცევის სიმბოლოების სიმბოლოები რეგულარულად გამოიყენება მუდმივი გამოხატვის მუდმივებში. ამდენად, / a \ 52b / არის \ * b / .

ნიმუშები და მოქმედებები

AWK არის ხაზის ორიენტირებული ენა. ნიმუში მოდის პირველი და შემდეგ აქცია. სამოქმედო განცხადებები თან დაურთულია { და } . ან ნიმუში შეიძლება იყოს დაკარგული, ან ქმედება შეიძლება დაკარგული, მაგრამ, რა თქმა უნდა, არ ორივე. თუ ნიმუში არ არის დაკარგული, აქცია შესრულებულია თითოეული ჩანაწერის შეყვანისთვის. დაკარგული ქმედება უდრის

{print}

რომელიც ასახავს მთელი ჩანაწერი.

კომენტარები იწყება `` # '' სიმბოლოსთან და გაგრძელდება ხაზის ბოლომდე. Blank ხაზები შეიძლება გამოყენებულ იქნას ცალკე განცხადებები. ჩვეულებრივ, განცხადება მთავრდება ახალი ხაზით, თუმცა ეს არ არის საქმე " , : , && , ან || . ხაზების დამთავრებამდე ან , ასევე, მათი განცხადებები ავტომატურად გაგრძელდება შემდეგ ხაზზე. სხვა შემთხვევებში, ხაზის გაგრძელება შეიძლება გაგრძელდეს მასთან ", ამ შემთხვევაში ახალი ხაზი იგნორირებული იქნება.

ერთჯერადი განცხადებების განთავსება შეიძლება ერთ ხაზზე, ``; ეს ეხება ორივე მოქმედებას სამოქმედო ნაწილის სამოქმედო ნაწილში (ჩვეულებრივი შემთხვევა) და ნიმუში-მოქმედებების შესახებ.

ნიმუშები

AWK ნიმუშების შეიძლება იყოს ერთი შემდეგი:

BEGIN END / რეგულარული გამოხატვა / relational expression pattern && ნიმუში ნიმუში || ნიმუში ნიმუში ნიმუში : ნიმუში ( ნიმუში ) ! ნიმუში pattern1 , pattern2

BEGIN და END არის ორი სპეციალური ნიმუში, რომლებიც არ შედის ტესტირების შეტანის წინააღმდეგ. ყველა სამაგისტრო ნაწილის სამოქმედო ნაწილები გაერთიანებულია, თითქოს ყველა განცხადება დაიწერა ერთი BEGIN ბლოკში. ისინი შესრულდება, სანამ რომელიმე შეყვანის წაიკითხავს. ანალოგიურად, ყველა END ბლოკები გაერთიანებულია და შესრულებული, როდესაც ყველა შეყვანის ამოწურულია (ან როდესაც გასვლის განაცხადი შესრულდება). BEGIN და END ნიმუშები ვერ კომბინირდება ნიმუშების სხვა მოდელებთან. BEGIN და END ნიმუშები ვერ მოქმედებს სამოქმედო ნაწილებზე.

რეგულარულად / რეგულარული გამოხატვისთვის , ასოცირებული განაცხადი შესრულებულია თითოეული ჩანაწერის ჩანაწერისთვის, რომელიც შეესაბამება რეგულარულ გამოხატვას. რეგულარული გამონათქვამები ისეთივეა , როგორიც არის egrep (1), და შეჯამებულია ქვემოთ.

რელევანტურ გამონათქვამს შეუძლია გამოიყენოს ნებისმიერი ოპერატორი, რომელიც განისაზღვრება ქვემოთ მოყვანილი ქმედებების შესახებ. ზოგადად შეამოწმეთ თუ არა გარკვეული სფეროები გარკვეული რეგულარული გამონათქვამების შესატყვისი.

&& , || , და ! ოპერატორები ლოგიკურია, ლოგიკური ან და ლოგიკური არ არის, შესაბამისად, როგორც C.- ს მოკლევადიანი შეფასება აქვთ, ასევე C- ს და გამოიყენება უფრო პრიმიტიული ნიმუშების გამონათქვამებთან. როგორც ბევრ ენაზე, ფრჩხილებში შეიძლება გამოყენებულ იქნას შეფასების წესის შეცვლა.

ოპერატორი ჰგავს C.- ს იგივე ოპერატორს, თუ პირველი ნიმუში არის ჭეშმარიტი, ხოლო ნიმუში გამოიყენება მეორე ნიმუში, წინააღმდეგ შემთხვევაში ეს არის მესამე. შეფასებულია მხოლოდ ერთი მეორე და მესამე ნიმუში.

გამოხატვის ნიმუში 1, ნიმუში 2 ეწოდება სპექტრი ნიმუში . ეს შეესაბამება ყველა ჩანაწერს ჩანაწერი დაწყებული ჩანაწერი, რომელიც შეესაბამება pattern1 და გაგრძელდება ჩანაწერი, რომელიც შეესაბამება pattern2 , მოიცავს. ეს არ აერთიანებს ნებისმიერი სახის ნიმუშის გამოხატვას.

რეგულარული გამოხატვა

რეგულარული გამონათქვამები არის გაფართოებული სახე. ისინი შედგება სიმბოლოების შემდეგნაირად:

შეესაბამება არა მეტაჩარქქტორს c .

\ გ

შეესაბამება ლიტერატურულ სიმბოლოს.

.

შეესაბამება ნებისმიერ ხასიათს, მათ შორის ახალ ხაზს.

^

შეესაბამება სიმებიანი დასაწყისი.

$

შეესაბამება სიმებიანის ბოლოს.

[ abc ... ]

სიმბოლოთა სია, შეესატყვისება ნებისმიერი სიმბოლოების ABC ....

[^ abc ... ]

უარყოფით ხასიათის სიაში, შეესაბამება ნებისმიერი ხასიათის გარდა, abc ....

r1 | r2

მონაცვლეობა: მატჩები ან r1 ან r2 .

r1r2

concatenation: მატჩები r1 და შემდეგ r2 .

r +

შეესაბამება ერთ ან მეტს rs .

r *

შეესაბამება ნულოვანი ან მეტი r .

?

შეესაბამება ნულს ან ერთს.

( )

დაჯგუფება: მატჩები r .

r { n }

r { n ,}

r { n , m } ერთი ან ორი რიცხვი შიგნით braces აღინიშნება ინტერვალის გამოხატვა . თუ არსებობს ერთი რიცხვი braces, წინა რეგულარული გამოხატულება r მეორდება n ჯერ. თუ ორი რიცხვი გამოყოფილია მძიმით, r მეორდება n ჯერ. თუ ერთი რიცხვი მოყვება მძიმით, მაშინ r რამდენჯერმე მეორდება.

ინტერვალი გამონათქვამები მხოლოდ იმ შემთხვევაშია შესაძლებელი, თუ ბრძანებათა სტრიქონით განსაზღვრულია --posix ან --re- ინტერვალი .

\ y

შეესაბამება ცარიელი სტრინს დასაწყისში ან სიტყვის ბოლოს.

\ B

შეესატყვისება ცარიელ სიას სიტყვაში.

\ <

შეესაბამება სიტყვის დასაწყისში ცარიელ სიას.

\>

შეესაბამება სიტყვის დასასრულს ცარიელი სტრიქონი.

\ w

შეესატყვისება რომელიმე სიტყვის შემადგენელ სიმბოლოს (ასო, ციფრი, ან ხაზს).

\ W

შეესაბამება ნებისმიერ ხასიათს, რომელიც არ არის სიტყვა-შემადგენელი.

\ `

შეესაბამება ცარიელი სტრინგი ბუფერული (სტრინგის) დასაწყისში.

\ '

შეესაბამება ცარიელი სტრინგი ბუფერის დასასრულს.

გაქცევის sequences, რომლებიც ძალაშია სიმებიანი მუდმივები (იხ. ქვემოთ) ასევე მოქმედებს რეგულარული გამონათქვამები.

პერსონალური კლასები არის POSIX სტანდარტში ახალი ფუნქცია. ხასიათი კლასის არის სპეციალური ნოტაცია სიმბოლოების სიები, რომლებიც სპეციფიკური ატრიბუტი აქვთ, მაგრამ სადაც ფაქტიურად პერსონაჟები შეიძლება განსხვავდებოდეს ქვეყნისაგან ან / და პერსონაჟის სიმბოლოთი. მაგალითად, რა არის ანბანური ხასიათის ცნება განსხვავებულია ამერიკისა და საფრანგეთში.

ხასიათი კლასის მხოლოდ მოქმედებს რეგულარული გამოხატვის შიგნით ფრჩხილებში ხასიათი სიაში. ხასიათი კლასების შედგება [: , სიტყვით აღინიშნება კლასში, და :] . POSIX სტანდარტით განსაზღვრული ხასიათი კლასებია:

[: ალნამი:]

Alphanumeric სიმბოლოები.

[: ალფა:]

ანბანური პერსონაჟი.

[: ცარიელი:]

სივრცე ან tab სიმბოლო.

[: cntrl:]

საკონტროლო სიმბოლოები.

[: ციფრი:]

რიცხვითი სიმბოლოები.

[: გრაფა:]

სიმბოლოები, რომლებიც ორივე დასაბეჭდი და თვალსაჩინოა. (სივრცე არის დასაბეჭდი, მაგრამ არ ჩანს, ხოლო ორივე არის).

[: ქვედა:]

ქვედა შემთხვევაში ალფავიტური სიმბოლოები.

[: print:]

ამოსაბეჭდი სიმბოლოები (სიმბოლოები, რომლებიც არ არიან კონტროლის სიმბოლოები.)

[პუნქტი:]

პუნქტუაციის სიმბოლოები (სიმბოლოები, რომლებიც არ არიან ასოები, ციფრები, სიმბოლოები ან სიმბოლოები).

[: სივრცე:]

სივრცის სიმბოლოები (მაგალითად, სივრცე, ჩანართი და ფორმაფიდი, რამდენიმე სახელი).

[: ზედა:]

ზედა ასო ალფავიტის სიმბოლოები.

[: xdigit:]

პერსონაჟები, რომლებიც ჰექსადეციალური ციფრებია.

მაგალითად, POSIX სტანდარტის დაწყებამდე, დამწერლობის სიმბოლოების შესაგროვებლად , თქვენ უნდა დაეწერა / [A-Za-z0-9] / . თუ პერსონაჟს სხვა ანბანური პერსონაჟები ჰქონდა, ეს არ შეესაბამება მათ და თუ თქვენი პერსონაჟები ASCII- სგან სხვაგვარად შეიკრიბებიან, ეს შეიძლება არც ASCII ალფანუმერული სიმბოლოების შეესაბამება. POSIX ხასიათის კლასებთან ერთად შეგიძლიათ დაწეროთ / [[: alnum:]] / , და ეს შეესაბამება სიმბოლოთა სიმბოლოს სიმბოლოს და სიმბოლოს.

ორი დამატებითი სპეციალური sequences შეიძლება გამოჩნდება ხასიათი სიები. ეს ეხება არა ASCII სიმბოლოებს, რომლებიც შეიძლება ჰქონდეს ერთი სიმბოლოები (ე.წ. საყელო ელემენტები ), რომლებიც წარმოდგენილია ერთზე მეტ სიმბოლოზე, ასევე რამდენიმე სიმბოლოთი, რომლებიც ემთხვევა კომბინაციას ან დახარისხებას. (მაგალითად, ფრანგულ ენაზე, ე.წ. "ე" და მძიმე-აქცენტირებული ე "ეკვივალენტია).

Collating სიმბოლოები

სიმბოლური სიმბოლო არის მრავალფუნქციური კოლაბორატორიული ელემენტი, რომელიც შედის [. და .] . მაგალითად, თუ ch არის შედგენილ ელემენტს, მაშინ [[გ.]] არის რეგულარული გამოსახულება, რომელიც შეესაბამება ამ შედგენილ ელემენტს, ხოლო [ჩ] არის რეგულარული გამოსახულება, რომელიც შეესაბამება ან .

ეკვივალენტობის კლასები

ეკვივალენტობის კლასი არის ლოკალი-კონკრეტული სახელი სიმბოლოთა სიაში, რომლებიც ექვივალენტურია. სახელი თან ერთვის [= და =] . მაგალითად, სახელი შეიძლება გამოყენებულ იქნას ყველა `` ე '', `` ე '', '' და `` ე`` წარმოდგენა. '' ამ შემთხვევაში, [[= e =]] არის რეგულარული გამოხატვა შეესაბამება რომელიმე e , e ან e- ს .

ეს მახასიათებლები ძალიან ძვირფასია არა ინგლისურენოვანი ლოკალურად. ბიბლიოთეკა ფუნქციებს, რომ gawk იყენებს რეგულარული გამოხატვის შესატყვისი ამჟამად მხოლოდ აღიარებს POSIX ხასიათი კლასები; ისინი არ იცნობენ შეჯახების სიმბოლოებს ან ეკვივალენტურ კლასებს.

\ Y , \ B , \ < , \> , \ w , \ W , \ ` , და \ ' ოპერატორები სპეციფიკურია gawk ; ისინი ვრცელდება GNU რეგულარული გამოხატვის ბიბლიოთეკების საშუალებით.

სხვადასხვა command line პარამეტრები აკონტროლებენ როგორ gawk interprets სიმბოლოები რეგულარული გამონათქვამები.

პარამეტრები არ არის

ნაგულისხმევი შემთხვევაში, gawk უზრუნველყოფს POSIX რეგულარული გამოხატვის ყველა ობიექტს და ზემოთ აღწერილი REGNU რეგულარული გამოხატვის ოპერატორებს. თუმცა, ინტერვალის გამოხატვა არ არის მხარდაჭერილი.

- სიმბოლო

მხოლოდ POSIX- ის რეგულარული გამოხატვა მხარდაჭერილია, GNU ოპერატორები არ არიან სპეციალური. (ეგ, \ w შეესაბამება ლიტერატურულ w ). დაშვებულია ინტერვალი გამონათქვამები.

- ტრადიციული

ტრადიციული Unix awk რეგულარული გამონათქვამები შეესაბამება. GNU ოპერატორები არ არიან სპეციალური, ინტერვალი გამონათქვამები არ არის ხელმისაწვდომი და არც POSIX ხასიათი კლასები ( [[ალნამი:]] და ასე შემდეგ). ოქტალური და თექვსმეტობითი გაქცევის სიმბოლოების მიერ აღწერილი პერსონაჟები სიტყვასიტყვით განიხილება, მაშინაც კი, თუ ისინი წარმოადგენენ რეგულარული გამოხატვის მეტაჩარქტექტორებს.

- ინტერვალის ინტერვალი

ინტერვალის გამოხატვა ნორმალურ გამონათქვამებში, თუნდაც - თუ არადამატებულია .

მოქმედებები

სამოქმედო განცხადებები თან ერთვის ბრჭყალებში, { და } . სამოქმედო განცხადებებში შედის ჩვეულებრივი დავალება, პირობითი და უმეტესი ენების პოვნა. ოპერატორებს, საკონტროლო განცხადებებსა და შეყვანის / გამოტანის შესახებ განცხადებებს ხელმისაწვდომია შემდეგ

ოპერატორები

ოპერატორები AWK- ში, უპირატესობის შემცირების მიზნით არიან

( ... )

დაჯგუფება

$

საველე ცნობარი.

++ -

ზრდა და შემცირება, როგორც პრეფიქსი და პოსტფიქსი.

^

ექსპონენცია ( ** შეიძლება გამოყენებული იქნას აგრეთვე ** = დავალების ოპერატორისთვის).

+ -!

Unary პლუს, unary მინუსი და ლოგიკური უარყოფა.

* /%

გამრავლება, გაყოფა და მოდული.

+ -

დამატება და გამოკლება.

სივრცე

სიმებიანი კონცენტრაცია.

<>

<=> =

! === რეგულარული რელატიური ოპერატორები.

~! ~

რეგულარული გამოხატვის მატჩი, უარყოფითი მატჩი. შენიშვნა: არ გამოიყენოთ მუდმივი რეგულარული გამოხატვა ( / foo / ) მარცხენა მხარეს ~ ან ! ~ . მხოლოდ ერთი გამოიყენეთ მარჯვენა მხარეს. გამოხატულება / foo / ~ exp აქვს იგივე მნიშვნელობა, როგორც (($ 0 ~ / foo /) ~ exp ) . ეს, როგორც წესი, არ არის განკუთვნილი.

შემოსული

Array წევრობის.

&&

ლოგიკური და.

||

ლოგიკური OR.

?:

C პირობითი გამოხატვა. მას აქვს ფორმა expr1 ? expr2 : expr3 . თუ expr1 მართალია, გამოხატვის ღირებულებაა expr2 , წინააღმდეგ შემთხვევაში ეს expr3 . შეფასებულია მხოლოდ ერთი expr2 და expr3 .

= + = - =

* = / =% = ^ = დავალება. ორივე აბსოლუტური დავალება ( var = value ) და ოპერატორის დავალება (სხვა ფორმები) მხარდაჭერილია.

საკონტროლო განცხადებები

საკონტროლო გამონათქვამები შემდეგია:

( გამონაკლისი ) გამონაკლისი განაცხადის გაკეთება ( expr1 ; expr2 ; expr3 ) განაცხადი ( var in array ) განაცხადის შესვენების გაგრძელების წაშლა array [ index ] წაშლა array exit [ გამოხატვა ] განცხადებები

I / O განცხადებები

შეყვანის / გამოტანის გამოსვლები შემდეგია:

დახურვა ( ფაილი [ , როგორ ] )

დახურვა ფაილი, მილის ან თანამშრომლობის პროცესში. სურვილისამებრ, თუ როგორ უნდა იქნას გამოყენებული მხოლოდ ორმხრივი მილის ერთ ბოლომდე დახურვის პროცესში. ეს უნდა იყოს სიმებიანი ღირებულება, ან "უნდა" ან "დან" .

getline

დააყენეთ $ 0 შემდეგი ჩანაწერის ჩანაწერიდან; მითითებული NF , NR , FNR .

getline < file

დააყენეთ $ 0 ფაილიდან შემდეგი ჩანაწერიდან; მითითებული NF .

getline var

დააყენეთ შემდეგი ჩანაწერის ჩანაწერი; მითითებული NR , FNR .

getline var < file

შეიტანეთ var შემდეგი ჩანაწერი ფაილი .

ბრძანება | getline [ var ]

გაუშვით ბრძანება piping გამომავალი არც $ 0 ან var , როგორც ზემოთ.

ბრძანება |

გაუშვით ბრძანება , როგორც თანაფარდობა გამომავალი ან $ 0 ან var- ზე , როგორც ზემოთ. კო-პროცესები გაღრმავების გაფართოებაა.

შემდეგი

მიმდინარე შეყვანის ჩანაწერის დამუშავების შეწყვეტა. შემდეგი შეყვანის ჩანაწერი წაკითხულია და დამუშავება იწყება AWK პროგრამის პირველი ნიმუშით. თუ შეყვანის მონაცემების დასასრულს მიაღწევთ, END ბლოკი (ებ) ი, თუ შესრულდება,

nextfile

მიმდინარე შეყვანის ფაილის დამუშავების შეჩერება. შემდეგი შეყვანის ჩანაწერი წაკითხულია მომდევნო შეყვანის ფაილში. FILENAME და ARGIND განახლებულია, FNR გადატვირთულია 1-მდე და დამუშავება დაიწყება AWK პროგრამის პირველი ნიმუშით. თუ შეყვანის მონაცემების დასასრულს მიაღწევთ, END ბლოკი (ებ) ი, თუ შესრულდება,

ბეჭდვა

ახდენს მიმდინარე ჩანაწერს. გამომავალი ჩანაწერი წყდება ORS ცვლადის ღირებულებით.

ბეჭდვის ვადები

ბეჭდავს გამონათქვამები. თითოეული გამოხატვა გამოყოფილია OFS ცვლადის ღირებულებით. გამომავალი ჩანაწერი წყდება ORS ცვლადის ღირებულებით.

ბეჭდვის ვადის გასვლის სია > ფაილი

ბეჭდვითი გამონათქვამები ფაილი . თითოეული გამოხატვა გამოყოფილია OFS ცვლადის ღირებულებით. გამომავალი ჩანაწერი წყდება ORS ცვლადის ღირებულებით.

printf fmt, expr- სია

ფორმატი და ბეჭდვა.

printf fmt, expr-list > ფაილი

ფორმატი და ბეჭდვა ფაილი .

სისტემა ( cmd- ხაზი )

შეასრულოს ბრძანება cmd-line და დაბრუნების გასვლის სტატუსი. (ეს არ შეიძლება იყოს ხელმისაწვდომი POSIX- ის სისტემებში.)

fflush ( [ file ] )

Flush ნებისმიერი ბუფერი დაკავშირებული ღია გამომავალი ფაილი ან მილის ფაილი . თუ ფაილი აკლია, მაშინ სტანდარტული გამომავალი არის flushed. თუ ფაილი არის null string, მაშინ ყველა ღია გამომავალი ფაილი და მილები აქვს მათი ბუფერი flushed.

დამატებითი გამომავალი გადანაწილებები დასაშვებია ბეჭდური და printf .

ბეჭდვა ... >> ფაილი

აგზავნის გამომავალს.

ბეჭდვა ... | ბრძანება

წერს მილზე.

ბეჭდვა ... |

აგზავნის მონაცემებს თანამშრომლობის პროცესში.

Getline ბრძანება ბრუნდება 0-ის ბოლოს და -1 შეცდომაზე. შეცდომისას, ERRNO შეიცავს სიას, რომელიც აღწერს პრობლემას.

შენიშვნა: თუ მილსადენის ან თანადაფინანსების გამოყენების მისაღწევად , ან ბეჭდვით ან printf- ს მარყუჟის ფარგლებში, უნდა გამოიყენოთ მჭიდრო () ბრძანების ახალი შემთხვევების შესაქმნელად. AWK ავტომატურად არ დახურავს მილების ან თანადაფინანსების დროს, როდესაც ისინი დაბრუნდებიან EOF.

Printf განცხადება

Printf- ის და sprintf () ფუნქციის AWK ვერსიები (იხ. ქვემოთ) მიიღებენ შემდეგ კონვერტაციის სპეციფიკურ ფორმატებში:

ASCII სიმბოლო. თუ % c გამოყენებული არგუმენტი რიცხვითია, იგი განიხილება, როგორც ხასიათი და დაბეჭდილი. წინააღმდეგ შემთხვევაში, არგუმენტი სავალდებულოა და ამ სიმებიდან მხოლოდ პირველი სიმბოლო იბეჭდება.

% d , % i

რიცხვითი რიცხვი (მთელი ნაწილი).

% e,% E

ფორმის მცურავი წერტილის ნომერი [-] d.dddddde [+ -] dd . % E ფორმატი E იყენებს ნაცვლად E.

ფორმის მცურავი წერტილი ნომერი [-] ddd.dddddd .

% g,% G

გამოიყენეთ % F ან კონვერსია, რაც უფრო მოკლეა, არასაკმარისი zeros შეკუმშული. % G ფორმატი იყენებს % E ნაცვლად % e .

o

ხელმოწერილი octal ნომერი (ასევე მთელი რიცხვი).

% u დაუზუსტებელი ათობითი რიცხვი (ისევ, მთელი რიცხვი).

% s

სიმბოლოთა სიმბოლო.

x, X

ხელმიუწვდომელი თექვსმეტობითი რიცხვი (მთელი რიცხვი). % X ფორმატი იყენებს ABCDEF ნაცვლად abcdef .

%%

ერთი % ხასიათი; არგუმენტი გარდაიქმნება.

სურვილისამებრ, დამატებით პარამეტრებს შეიძლება დაეყრდნოს % და საკონტროლო წერილი:

ითვლიან $

გამოიყენეთ რაოდენობა "th არგუმენტი ამ ეტაპზე ფორმატირება. ამას ეწოდება პოსტიანი სპეციფიკა და განკუთვნილია ფორმატის სტრიქონების თარგმანულ ვერსიებში, არა AWK პროგრამის თავდაპირველ ტექსტში. ეს არის gawk გაფართოება.

-

გამოხატულება უნდა იყოს მარცხენა-დასაბუთებული თავის სფეროში.

სივრცე

რიცხვითი კონფიგურაციებისათვის, პრეფიქსი დადებითი მნიშვნელობები სივრცეში და უარყოფითი მნიშვნელობები მინუს ნიშანით.

+

პლიუს ნიშანი, რომელიც გამოიყენება სიგანე მოდიფიკატორის წინ (იხ. ქვემოთ), ნათქვამია ყოველთვის ციფრული კონვერტაციის ნიშანი, მაშინაც კი, თუ მონაცემთა ფორმატირება დადებითია. + შეცვლის სივრცეში მოდიფიკატორი.

#

გამოიყენეთ `ალტერნატიული ფორმა '' გარკვეული კონტროლის წერილებისათვის. % O , მიაწოდოს წამყვანი ნულოვანი. % X და X- ისთვის, 0x- ან 0X- ზე მიაწოდოს არასასურველი შედეგი. % E , % E და f% , შედეგი ყოველთვის შეიცავს ათობითი წერტილი. % G და % G- სთვის , ზრდის ნარჩენი ზონების შედეგი არ არის ამოღებული.

0

წამყვანი 0 (ნულოვანი) მოქმედებს დროდადრო, რაც მიუთითებს, რომ გამომავალი უნდა იყოს padded with zeroes ნაცვლად ფართები. ეს კი არა რიცხვითი გამომავალი ფორმატებისთვისაც ვრცელდება. ეს დროშა მხოლოდ იმ შემთხვევაში მოქმედებს, როდესაც საველე სიგანე უფრო ფართოა, ვიდრე დაბეჭდილი.

სიგანე

ველი უნდა იყოს padded ამ სიგანე. ველი ჩვეულებრივ padded ერთად ფართები. თუ 0 დროშა გამოყენებული იქნა, ის peded ერთად zeroes.

. ზუსტი

რიცხვი, რომელიც განსაზღვრავს ბეჭდვის დროს გამოყენებას. % E , % E და F ფორმატებისთვის, ეს განსაზღვრავს ციფრების რაოდენობას, რომელიც გსურთ დაიბეჭდოს ათობითი წერტილიდან. % G და % G ფორმატისთვის, იგი განსაზღვრავს მნიშვნელოვან ციფრების მაქსიმალურ რაოდენობას. % D , % o , % i , % u , % x და X ფორმატებში, ის განსაზღვრავს ციფრების მინიმალურ რაოდენობას ბეჭდვაში. % S- ისთვის , ის განსაზღვრავს სიმბოლოების სიმბოლოების მაქსიმალურ რაოდენობას.

დინამიური სიგანე და ზუსტი შესაძლებლობები ANSI C printf () routines მხარდაჭერა. * * ან სიგანე ან განზომილების სპეციფიკაციების შემთხვევაში, მათი ღირებულებები არგუმენტირებული სიიდან ამოიღებს printf ან sprintf () . დინამიური სიგანე ან სიზუსტით მოქმედი სპეციფიკის გამოსაყენებლად, მიუთითეთ $ * ფორმატის სტრიქონის შემდეგ. მაგალითად, "% 3 $ * 2 $. * 1 $ s" .

სპეციალური ფაილი სახელები

როდესაც I / O გადამისამართება ან ბეჭდვითი ან printf ფაილიდან, ან getline მეშვეობით ფაილი, gawk აღიარებს გარკვეული სპეციალური filenames იძულებით. ეს filenames საშუალებას მისცემს ხელმისაწვდომს ღია ფაილის descriptors მემკვიდრეობით gawk ის მშობელი პროცესი (როგორც წესი, shell). ამ ფაილების სახელები შესაძლოა გამოყენებულ იქნას ბრძანების ხაზით მონაცემთა ფაილებისთვის. ესენია:

/ dev / stdin

სტანდარტული შეყვანა.

/ dev / stdout

სტანდარტული გამომავალი.

/ dev / stderr

სტანდარტული შეცდომის გამომუშავება.

/ dev / fd / n

ფაილი დაკავშირებულია ღია ფაილის ავტორის N.

ეს განსაკუთრებით სასარგებლოა შეცდომების შესახებ. მაგალითად:

ბეჭდვა "თქვენ ააფეთქეთ!" > "/ dev / stderr"

ხოლო სხვაგვარად უნდა გამოიყენოთ

ბეჭდვა "თქვენ ააფეთქეთ!" | "კატა 1> & 2"

TCP / IP ქსელის კავშირების შესაქმნელად |

/ inet / tcp / lport / rhost / rport

ფაილი TCP / IP კავშირი ადგილობრივი პორტის lport დისტანციური მასპინძელი rhost დისტანციური პორტში rport . გამოიყენეთ პორტი 0- ის სისტემა, რომელსაც აქვს პორტი.

/ inet / udp / lport / rhost / rport

მსგავსი, მაგრამ გამოიყენეთ UDP / IP ნაცვლად TCP / IP.

/ inet / raw / lport / rhost / rport

დაცულია მომავალი გამოყენებისათვის.

სხვა სპეციალური დოკუმენტაციები ითვალისწინებენ ინფორმაციის ხელმისაწვდომობას გაშვებული Gawk პროცესის შესახებ. ეს filenames ახლა მოძველებულია. გამოიყენეთ PROCINFO მასივი იმისათვის, რომ მიიღონ ინფორმაცია. ესენია:

/ dev / pid

წაკითხვის ეს ფაილი ბრუნდება პროცესის ID მიმდინარე პროცესის, ათობითი, შეწყდა ახალი ხაზი.

/ dev / ppid

წაკითხვის ეს ფაილი ბრუნდება პროცესის ID მიმდინარე პროცესის, ათობითი, შეწყდეს ახალიline.

/ dev / pgrpid

წაკითხვის ეს ფაილი ბრუნდება პროცესის ჯგუფის ID მიმდინარე პროცესის, ათობითი, შეწყდა ახალი ხაზი.

/ dev / user

წაკითხვის ეს ფაილი ბრუნდება ერთი ჩანაწერი შეწყდა ახალიline. სფეროები გამოყოფილია სივრცეებით. $ 1 არის getuid (2) სისტემის ზარის ღირებულება, 2 $ არის geteuid (2) სისტემის ზარის ღირებულება, $ 3 არის ფასიანი (2) სისტემის ზარის ღირებულება და $ 4 არის getegid (2) სისტემის ზარი. თუ არსებობს დამატებითი სფეროები, ისინი ჯგუფურ ID- ებს გეგმავს ჯგუფები (2). მრავალრიცხოვანი ჯგუფები შეიძლება არ იყოს მხარდაჭერილი ყველა სისტემასთან.

რიცხვითი ფუნქციები

AWK- ს აქვს შემდეგი ჩაშენებული არითმეტიკული ფუნქციები:

atan2 ( y , x )

აბრუნებს y / x- ს არქტიკანტებში.

cos ( expr )

აბრუნებს ექსპრესის კოსინს , რომელიც რადიანსშია.

exp ( expr )

ექსპონენციალური ფუნქცია.

int ( expr )

კალკულატორი მთელი რიცხვებით.

log ( expr )

ბუნებრივი ლოგარითმი ფუნქცია.

rand ()

აბრუნებს შემთხვევითი რიცხვი 0-დან 1-მდე.

ცოდვა ( expr )

აბრუნებს ექსტრატის სინჯს , რომელიც რადიანსშია.

sqrt ( expr )

კვადრატული ფესვის ფუნქცია.

srand ( [ expr ] )

იყენებს გამონაყარს ახალი სათესლე შემთხვევითი რიცხვების გენერატორისათვის. თუ ვადა არ არის გატარებული, დღის დრო გამოიყენება. დაბრუნების ღირებულება არის წინა თესლი შემთხვევითი რიცხვების გენერატორისათვის.

სიმებიანი ფუნქციები

Gawk აქვს შემდეგი ჩაშენებული სიმებიანი ფუნქციები:

ასორტი ( s [ , ] )

აბრუნებს წყარო ელემენტების ელემენტთა რაოდენობას. შინაარსი s არის დახარისხებული გამოყენებით gawk ნორმალური წესები შედარების ღირებულებები და ინდექსები დახარისხებული ღირებულებების s შეიცვალა თანმიმდევრული რიცხვებით დაწყებული 1. თუ სასურველი დანიშნულების მასივი d არის მითითებული, მაშინ s პირველი დუბლირებული შევიდა d და შემდეგ d არის დალაგებული, რის გამოც ინდექსების წყაროები უცვლელი რჩება.

გენსუბში ( r , s , h [ , t ] )

ძიება სამიზნე სიმებიანი t for რეგულარული გამოხატვის . თუ h არის string beginning g ან g , მაშინ ჩაანაცვლებს r- ყველა მატჩს. წინააღმდეგ შემთხვევაში, h არის რიცხვი, რომლის მიხედვითაც r- ის მატჩი შეცვლის. თუ t არ არის მოწოდებული, ნაცვლად $ 0 გამოიყენება. ჩანაცვლების ტექსტის ფარგლებში , \ n , სადაც n არის 1-დან 9-მდე ციფრი, შეიძლება გამოყენებულ იქნას მხოლოდ იმ ტექსტის მითითებით, რომელიც შეესაბამება n- ის ფრჩხილებს. თანმიმდევრობა \ 0 წარმოადგენს მთელ თანმიმდევრულ ტექსტს, ისევე როგორც ხასიათი და . განსხვავებით sub () და gsub () განსხვავებით , შეცვლილი სიმები ფუნქციის შედეგად დაბრუნდა და ორიგინალური სამიზნე სიმები არ შეიცვლება.

gsub ( r , s [ , t ] )

თითოეული კომპონენტისთვის, რომელიც რეგულარულად გამოხატავს სტრიქონით გამოსაყენებელ ტექსტს , ჩაანაცვლებს სტრინგს და დააბრუნებს ჩანაცვლების რაოდენობას. თუ t არ არის მიწოდებული, გამოიყენეთ $ 0 . ჩანაცვლების ტექსტში შეიცვალა ტექსტი, რომელიც რეალურად შეესაბამებოდა. გამოიყენეთ \ და მიიღოთ ლიტერატურა. (ეს უნდა იყოს აკრეფილი როგორც "\\ &" ; იხ. GAWK: ეფექტური AWK პროგრამირების სრული განხილვის წესები და დაქვემდებარებული ტექსტის ჩანაცვლების ტექსტში, gsub () და gensub () .

ინდექსი ( s , t )

აბრუნებს სტრინგის t- ს სიმებიანი სტრიქონში, ან 0 თუ t არ არის წარმოდგენილი. (ეს გულისხმობს, რომ სიმბოლოები იწყება ერთში.)

სიგრძე ( [ s ] )

ანაზღაურებს სიმებიანი სტრიტის სიგრძე , ან $ s- ის სიგრძე არ არის მიწოდებული.

მატჩი ( s , r [ , a ] )

აბრუნებს პოზიციას s სადაც რეგულარული გამოხატულება r ხდება, ან 0 თუ r არ არის წარმოდგენილი და განსაზღვრავს RSTART და RLENGTH მნიშვნელობები . გაითვალისწინეთ, რომ არგუმენტის შეკვეთა იგივეა, რაც ~ ოპერატორისთვის: str . თუ მასივი არის მოწოდებული, გაწმენდილია და შემდეგ ელემენტები 1-ის მეშვეობით ივსება s- ის ნაწილებით, რომლებიც შეესაბამება რ- ში შესაბამისი ფრჩხილების შემცველობას. 0-ის ელემენტი შეიცავს მთლიანი რეგულარული გამოხატვის თანდასწრებით .

გაყოფილი ( s , a [ , r ] )

განაწილების სიმებიანი s შევიდა მასივი on რეგულარული გამოხატვის r და დააბრუნებს რაოდენობის სფეროებში. თუ r გამოტოვებულია, FS გამოიყენება ნაცვლად. მასივი პირველია. გაყოფა მოიქცევა იდენტურად, რომელიც აღწერილია ზემოთხსენებულ ნაწილზე.

sprintf ( fmt , expr- სია )

ბეჭდავს ფურცლის სიის ქაღალდი და ბრუნდება სტრინგი.

strtonum ( str )

საგამოცდო ხაზი და დააბრუნებს მისი რიცხვითი მნიშვნელობა. თუ სტრიტი იწყება წამყვან 0-თან , strtonum () ფიქრობს, რომ str არის octal number. თუ ST- ი იწყება წამყვანი 0x ან 0X- ით , strtonum () იგულისხმება, რომ str არის თექვსმეტი რიცხვი.

ქვე ( , s [ , t ] )

ისევე როგორც gsub () , მაგრამ მხოლოდ პირველი შესატყვისი შემცვლელი შეიცვლება.

substr ( s , i [ , n ] )

აბრუნებს i- ზე დაწყებული უმეტესი n- კარკასის შემცვლელი შემცვლელი. თუ n არ არის გამოტოვებული, დანარჩენი s გამოიყენება.

ტოლერვატი

აბრუნებს სიმებიანი ქედის ასლს, ყველა ზედა ასოებს, რომლებიც ითარგმნება მათ ქვედანაწილთან შედარებით. უცვლელი სიმბოლოები დარჩა უცვლელი.

toupper ( str )

აბრუნებს სიმებიანი ქედის ასლს, ყველა ქვედაფენიანი სიმბოლოთი, რომელიც ითარგმნება მათი შესაბამისი ზედა შემთხვევაში. უცვლელი სიმბოლოები დარჩა უცვლელი.

დროის ფუნქციები

ვინაიდან AWK- ის პროგრამების ერთ-ერთი ძირითადი გამოყენება გადამუშავების ჟურნალი ფაილებია, რომელიც შეიცავს დროის შტამპი ინფორმაციას, gawk უზრუნველყოფს დროის ფუნქციონირების მოპოვების შემდეგ ფუნქციებს და მათ გაფორმებას.

mktime ( datespec )

იწვის თარიღებს ერთნაირი ფორმით, როგორც სისმიმ () . თარიღები არის ფორმა YYYY MM DD HH MM SS [DST] . სიმებიანი შინაარსი წარმოდგენილია ექვსიდან ან შვიდი რიცხვით, რომელთა რიცხვი შეადგენს 1-დან 12 თვემდე, 1-დან 31-ის ჩათვლით, 0-დან 23 საათამდე, 59 და მეორე 0-დან 60 წლამდე და სურვილისამებრ დღის სინათლის დროშა. ამ ნომრებზე ფასეულობები არ უნდა იყოს გათვალისწინებული მერყეობს; მაგალითად, 1 საათი -1 ნიშნავს შუაღამისას 1 საათით ადრე. წარმოშობა-ნულოვანი გრიგორიანული კალენდარი გათვალისწინებულია წელიწადში 0-დან 1 წლამდე 1 წლის წინა წლისთვის. დრო ითვლება ადგილობრივ დროის სარტყელში. იმ შემთხვევაში, თუ დღის სინათლის დროშა დადებითია, დრო ითვლება დღისით გადარჩენის დროში; თუ ნულოვანი, დრო ითვლება სტანდარტული დრო; და თუ უარყოფითი (default), mktime () ცდილობს განსაზღვროს თუ არა დღის სინათლე დროში მითითებული დროისთვის. თუ თარიღები არ შეიცავს საკმარის ელემენტებს, ან თუ შედეგი არ არის გამომავალი პერიოდი, mktime () ბრუნდება -1.

strftime ( [ ფორმატი [ , დროის ნიშნულის ]] )

ფორმატის სპეციფიკაციის მიხედვით ფორმატის დროითი ფორმატი. დროის ნიშნულს უნდა ჰქონდეს იგივე ფორმა, როგორც სისმიმ () . თუ timestamp აკლია, დღეის განმავლობაში გამოიყენება. თუ ფორმატი არ არის დაკარგული, ნაგულისხმევი ფორმატი გამოიყენება თარიღის (1) გამომავალი. იხილე სპეციფიკაცია strftime () ფუნქციისთვის ANSI C ფორმატის კონვერტაციისთვის, რომელიც ხელმისაწვდომი იქნება გარანტირებული. Strftime (3) -ის საჯარო დომენის ვერსია და მასთან ერთად გვერდი მას გააჩნია Gawk ; თუ ეს ვერსია იყო გამოყენებული, რომ ავაშენოთ Gawk , მაშინ ყველა კონვერტაციის აღწერილი ამ კაცი გვერდზე ხელმისაწვდომია gawk.

სისმი ()

აბრუნებს დღევანდელი დღე ეპოქის შემდეგ წამებში (1970-01-01 00:00:00 UTC POSIX სისტემებზე).

Bit მანიპულაციები ფუნქციები

დაწყებული ვერსია 3.1 of gawk , შემდეგ ცოტა მანიპულირება ფუნქციები ხელმისაწვდომია. ისინი მუშაობენ ორმაგი სიზუსტით მცურავი წერტილის ღირებულებების კონვერტირებაზე, რომლებიც არ ექვემდებარებიან ხანგრძლივ რიცხვებს, ოპერაციის გაკეთებას, და შემდეგ შედეგებს კონვერტირებას დაუბრუნდებათ. ფუნქციებია:

და ( v1 , v2 )

დავუბრუნდეთ v1 და v2- ს მიერ წარმოდგენილ ღირებულებებს.

საჩივარი ( ვალ )

დააბრუნეთ valve შევსება შეავსოთ.

lshift ( val , რაოდენობა )

დაბრუნდით ღირებულების val , გადაინაცვლებს დაუტოვებიათ რაოდენობა ბიტი.

ან ( v1 , v2 )

დავუბრუნდეთ bitwise OR ფასეულობებს v1 და v2 .

rshift ( val , რაოდენობა )

დაბრუნდით ღირებულების val , გადაინაცვლებს უფლება რაოდენობა ბიტი.

xor ( v1 , v2 )

დავუბრუნეთ v1 და v2- ის მიერ წარმოდგენილი ფასეულობების bitwise XOR.

ინტერნაციონალიზაციის ფუნქციები

Gawk- ის ვერსიის 3.1 ვერსიიდან, შეიძლება გამოყენებულ იქნას თქვენი AWK პროგრამის ფარგლებში გამოყენებული შემდეგი ფუნქციები გასაშვებად სტრიქონების თარგმნისთვის. სრული დეტალების სანახავად იხილეთ GAWK: ეფექტური AWK პროგრამირება .

bindtextdomain ( დირექტორია [ , დომენი ] )

განსაზღვრავს დირექტორია, სადაც gawk გამოიყურება. MO ფაილი, იმ შემთხვევაში, თუ ისინი არ ან არ შეიძლება განთავსდეს `` სტანდარტული '' ადგილებში (მაგალითად, ტესტირების დროს). იგი დააბრუნებს დირექტორიაში, სადაც დომენია "შეკრული".

ნაგულისხმევი დომენი TEXTDOMAIN- ის ღირებულებაა. თუ დირექტორია არის null string ( "" ), მაშინ bindtextdomain () ბრუნდება მიმდინარე სავალდებულო მოცემულ დომენზე .

dcgettext ( string [ , დომენი [ , კატეგორია ]] )

აბრუნებს ტექსტის დომენური დომენის სიას თარგმნის კატეგორიის ლოკალიზაციისთვის. დომენისთვის ნაგულისხმევი მნიშვნელობაა TEXTDOMAIN- ის მიმდინარე ღირებულება. კატეგორიისთვის სტანდარტული მნიშვნელობა არის "LC_MESSAGES" .

თუ კატეგორიას მიკუთვნებულ მნიშვნელობას ანიჭებთ , ეს უნდა იყოს სიმებიანი ტექსტი, რომელიც აღწერილია GAWK- ში არსებულ ერთ-ერთ ცნობილ ლოკალურ კატეგორიაში : ეფექტური AWK პროგრამირება . თქვენ ასევე უნდა მიუთითოთ ტექსტი დომენი. გამოიყენეთ TEXTDOMAIN თუ გსურთ გამოიყენოთ მიმდინარე დომენი.

dcngettext ( string1 , string2 , ნომერი [ , დომენი [ , კატეგორია ]] )

აბრუნებს string1 და string2 ტექსტის დომენის დომენში თარგმნის რაოდენობრივ ლოგოს კატეგორიის კატეგორიას . დომენისთვის ნაგულისხმევი მნიშვნელობაა TEXTDOMAIN- ის მიმდინარე ღირებულება. კატეგორიისთვის სტანდარტული მნიშვნელობა არის "LC_MESSAGES" .

თუ კატეგორიას მიკუთვნებულ მნიშვნელობას ანიჭებთ , ეს უნდა იყოს სიმებიანი ტექსტი, რომელიც აღწერილია GAWK- ში არსებულ ერთ-ერთ ცნობილ ლოკალურ კატეგორიაში : ეფექტური AWK პროგრამირება . თქვენ ასევე უნდა მიუთითოთ ტექსტი დომენი. გამოიყენეთ TEXTDOMAIN თუ გსურთ გამოიყენოთ მიმდინარე დომენი.

USER- განუსაზღვრელი ფუნქციები

ფუნქციები AWK- ში განისაზღვრება:

ფუნქციის სახელი ( პარამეტრების სია ) { განცხადებები }

ფუნქციები ხორციელდება, როდესაც ისინი გამოხატულია შაბლონებში ან მოქმედებებში. ფუნქციურ ზონაში მიწოდებული ფაქტობრივი პარამეტრების გამოყენება გამოიყენება ფუნქციებში გამოცხადებულ ფორმალურ პარამეტრებში. მასივები გადაეცემა მითითებას, სხვა ცვლადები გადადის ღირებულებით.

მას შემდეგ, რაც ფუნქციები არ იყო თავდაპირველად AWK ენის ნაწილი, ადგილობრივი ცვლადების უზრუნველყოფა საკმაოდ მოუხერხებელია: ისინი პარამეტრების სიაში დამატებით პარამეტრებად გამოცხადდებიან. კონვენცია არის ადგილობრივი პარამეტრების გამოყოფა პარამეტრების ჩამონათვალში დამატებითი პარამეტრების მიხედვით. მაგალითად:

ფუნქცია f (p, q, a, b) # a და b ადგილობრივია {...} / abc / {...; ვ (1, 2); ...}

მარცხენა ფრჩხილი ფუნქციის ზარისთვის აუცილებელია დაუყოვნებლივ დაიცვას ფუნქციის სახელი, თეთრი ინტერვენციის გარეშე. ეს არის ის, რომ თავიდან იქნას აცილებული სინტაქსური ორაზროვნება შემაერთო ოპერატორთან. ეს შეზღუდვა არ ვრცელდება ზემოთ ჩამოთვლილ ფუნქციებში.

ფუნქციები შეიძლება ერთმანეთს უწოდებენ და შეიძლება რეკურსიული იყოს. ფუნქციის პარამეტრების გამოყენება, როგორც ადგილობრივი ცვლადები, ინიციალიზაცია null string და რიცხვი ნულოვანი ფუნქცია invocation.

ფუნქციის დაბრუნების მიზნით დაბრუნების დაბრუნების გამოყენება. დაბრუნების ღირებულება განუსაზღვრელია, თუ ღირებულება არ არის გათვალისწინებული, ან თუ ფუნქცია დააბრუნებს ბოლომდე "დაცემით".

იმ შემთხვევაში, თუ გლინმა გაითვალისწინა, გაფრთხილებაზე გაფრთხილება გაუთვალისწინებელ ფუნქციებს პაროლის დროს, ნაცვლად დროის ნაცვლად. დარეკვის დროს გაუთვალისწინებელი ფუნქციის დარეკვა ფატალური შეცდომაა.

სიტყვის ფუნქცია შეიძლება გამოყენებულ იქნეს ფუნქციის ადგილზე .

კინემატოგრაფია ახალი ფუნქციები

დაწყებული ვერსია 3.1 gawk , შეგიძლიათ დინამიურად დაამატოთ ახალი ჩაშენებული ფუნქციების გაშვებული gawk თარჯიმანი. სრული დეტალები ამ სახელმძღვანელოს მიღმაა; იხილეთ GAWK: ეფექტური AWK პროგრამირების დეტალები.

გაფართოება ( ობიექტი , ფუნქცია )

დინამიურად უკავშირდება ობიექტის მიერ დადებული ობიექტის ფაილი და ამ ობიექტში ფუნქციის ჩართვა, დაწყების ინიციატივა. ეს უნდა იყოს როგორც სტრიქონებად. აბრუნებს ფუნქციის მიერ დაბრუნებულ მნიშვნელობას.

ეს ფუნქცია და დოკუმენტირებულია GAWK- ში: ეფექტური AWK პროგრამირება , მაგრამ ყველაფერი ამ ფუნქციის შესახებ სავარაუდოდ შეიცვლება მომდევნო გათავისუფლებაში. ჩვენ გირჩევთ, რომ არ გამოიყენოთ ეს ფუნქცია იმისათვის, რომ თქვენ არ გსურთ შეცვალოთ.

სიგნალები

pgawk იღებს ორი სიგნალს. SIGUSR1 იწვევს მას, რომ დააინსტალიროთ პროფილი და ფუნქციის ზარის დასტის პროფილის ფაილი, რომელიც არის ან არ არის , ან ნებისმიერი ფაილი დაასახელა -პროფილის ვარიანტი. მას შემდეგ აგრძელებს აწარმოებს. SIGHUP- ი იწვევს მას, რომ დააზიანოს პროფილი და ფუნქცია ზარის დასტის შემდეგ და გამოდის.

მაგალითები

ბეჭდვა და დალაგება ყველა მომხმარებლის სახელი: BEGIN {FS = ":"} {print $ 1 | " სორტი "}} ფაილის რაოდენობა: {nlines ++} END {print nlines} წინამდებარე ნომრის თითოეული ხაზი წინამდებარე ფაილში წინ: {print FNR, $ 0} კონცენტრირება და ხაზის ნომერი (ვარიაცია თემაზე): {print nr, $ 0}

შინაგანიზაცია

String constants არიან სიმბოლოები სიმბოლოების თანდართული ორმაგი შეთავაზებები. არასამთავრობო ინგლისურენოვანი გარემოში, შესაძლებელია AWK პროგრამაში სტრიქონების აღნიშვნა, როგორც ამას ითხოვენ მშობლიურ ენაზე თარგმნა. ასეთ სიმები აღინიშნება AWK პროგრამით წამყვან ქვედანაყოფთან (`` _ ""). მაგალითად,

gawk 'BEGIN {ბეჭდვა "hello, world"}'

ყოველთვის ბეჭდავს , სამყაროში . მაგრამ,

gawk 'BEGIN {print _ "hello, world"}'

შესაძლოა დაბეჭდე ბონჯური, მოუნდი საფრანგეთში.

არსებობს რამდენიმე ნაბიჯი ჩართული ადგილწარმოშობისა და გაშვებული localizable AWK პროგრამა.

1.

დაამატეთ BEGIN - ს აქცია TEXTDOMAIN- ის ცვლადს, რათა შეიტანოთ ტექსტი დომენი თქვენს პროგრამასთან ასოცირებული სახელისთვის.


BEGIN {TEXTDOMAIN = "myprog"}

ეს საშუალებას აძლევს gawk იპოვონ. MO ფაილი ასოცირდება თქვენი პროგრამა. ამ ნაბიჯის გარეშე, gawk იყენებს ტექსტური დომენის შეტყობინებას , რომელიც, სავარაუდოდ, არ შეიცავს თქვენს პროგრამას.

2.

მონიშნე ყველა სტრიქონი, რომელიც თარგმნილი უნდა იყოს წამყვან ქვედანაყოფებთან.

3.

საჭიროების შემთხვევაში გამოიყენეთ თქვენი პროგრამით dcgettext () და / ან bindtextdomain () ფუნქციები.

4.

Run gawk --gen-po -f myprog.awk> myprog.po გენერირება .po ფაილი თქვენი პროგრამა.

5.

უზრუნველყოს შესაბამისი თარგმანი, და შექმნა და დაამყაროს შესაბამისი.

ინტერნაციონალიზაციის მახასიათებლები დეტალურადაა აღწერილი GAWK- ში: ეფექტური AWK პროგრამირება .

Posix თავსებადობა

Gawk- ის უმთავრესი მიზანია თავსებადი POSIX სტანდარტით, ისევე როგორც UNIX- ის უახლესი ვერსია. ამ მიზნით, gawk აერთიანებს შემდეგი მომხმარებლის ხილული თვისებები, რომლებიც არ არის აღწერილი AWK წიგნი, მაგრამ ნაწილი Bell ლაბორატორიის ვერსია awk , და არიან POSIX სტანდარტი.

წიგნი მიუთითებს, რომ ბრძანების ხაზი ცვლადი დავალება ხდება, როდესაც awk სხვაგვარად გახსნის არგუმენტს, როგორც ფაილი, რომელიც მას შემდეგ, რაც BEGIN ბლოკი შესრულებულია. თუმცა, ადრე შესრულებებში, როდესაც ასეთი დავალება გამოჩნდა ნებისმიერი ფაილის სახელის მიხედვით, დავალება მოხდებოდა, სანამ დაბლოკილი იყო დაბლოკვა. განაცხადები მოვიდა დამოკიდებული ამ `` ფუნქციაზე ~. '' როდესაც awk შეიცვალა, რათა დაარეგისტრირონ მისი დოკუმენტაცია, - ვარიაცია გადაცემის დაწყებამდე ცვლადების გადასაწერად დაემატა განაცხადები, რომლებიც დამოკიდებული იყო ძველი ქცევის მიხედვით. (ეს ფუნქცია ბილ ლაბორატორიებისა და GNU პროგრამისტების მიერ იყო შეთანხმებული).

-W ვარიანტის განხორციელების სპეციფიკური ფუნქციებია POSIX სტანდარტიდან.

არგუმენტების დამუშავებისას, gawk იყენებს სპეციალურ ვარიანტს `` - '' არგუმენტების დასასრულებლად. თავსებადობის რეჟიმში, ის აფრთხილებს, მაგრამ სხვაგვარად უგულებელყოფს განუსაზღვრელი პარამეტრები. ნორმალურ ოპერაციებში, ასეთ არგუმენტებს გადაეცემა AWK პროგრამის დამუშავება.

AWK წიგნი არ განსაზღვრავს srand- ის დაბრუნების მნიშვნელობას. POSIX სტანდარტს აქვს ის, რომ ის გამოიყენებს თესლის გამოყენებას, რათა შემთხვევითი რიცხვების თანმიმდევრულად ჩაითვალოს. ამიტომ srand () in gawk ასევე ბრუნდება მისი მიმდინარე თესლი.

სხვა ახალი თვისებებია: მრავალრიცხოვანი პარამეტრების გამოყენება (MKS awk ); ENVIRON მასივი; \ a , და \ v გაქცევა sequences (გაკეთდეს თავდაპირველად gawk და იკვებება შევიდა Bell ლაბორატორიული ვერსია); tolower () და toupper () ინტეგრირებული ფუნქციები (ბელი ლაბორატორიის ვერსია); და ANSI C კონვერტაციის სპეციფიკაციები printf (გაკეთდეს პირველი Bell ლაბორატორიული ვერსია).

ისტორიული მახასიათებლები

არსებობს ისტორიული AWK- ის ორი შესრულების ორი მახასიათებელი, რომლებიც მხარს უჭერენ მხარს. პირველ რიგში შესაძლებელია სიგრძის () ჩაშენებული ფუნქცია არა მხოლოდ არგუმენტით, არამედ ფრჩხილების გარეშეც! ამდენად,

a = სიგრძე # წმიდა ალგოლის 60, ბეტმენი!

იგივეა, რაც ორივე

= სიგრძე ()
= სიგრძე ($ 0)

ეს ფუნქცია აღინიშნება როგორც "უარყოფილი" POSIX სტანდარტში და gawk იძლევა გაფრთხილებას მისი გამოყენების შესახებ, თუ ბრძანება მითითებულია ბრძანებათა სიაში .

სხვა ფუნქცია არის გამოყენების ან გაგრძელების ან შესვენების განცხადებები გარეთ სხეულის, for , ან loop. ტრადიციული AWK- ის განხორციელება ასეთ გამოყენებას მოჰყვება მომდევნო განცხადების ეკვივალენტად. Gawk მხარს უჭერს ამ სარგებელს, თუ იყო დადგენილი.

GNU Extensions

Gawk- ს გააჩნია POSIX awk- ს რიგი გაგრძელება. ისინი აღწერილია ამ ნაწილში. აქ აღწერილი ყველა გაფართოება შეიძლება გამორთულია გრადუსებით - ტრადიციული ვარიანტით.

Gawk- ის შემდეგი მახასიათებლები არ არის ხელმისაწვდომი POSIX awk- ში .

*

ფაილების ძიება არ არის შესრულებული ფაილების სახელით. ამიტომ AWKPATH გარემოს ცვლადი არ არის განსაკუთრებული.

*

\ X გაქცევის თანმიმდევრობა. (შეზღუდული შესაძლებლობების მქონე - withix .)

*

Fflush () ფუნქცია. (შეზღუდული შესაძლებლობების მქონე - withix .)

*

განაგრძო ხაზების გაგრძელება ? და : (შეზღუდული შესაძლებლობების მქონე - withix .)

*

ოქტალური და თექვსმეტობითი კონცენტრატები AWK პროგრამებში.

*

ARGIND , BINMODE , ERRNO , LINT , RT და TEXTDOMAIN ცვლადები არ არის განსაკუთრებული.

*

IGNORECASE ცვლადი და მისი გვერდითი მოვლენები არ არის ხელმისაწვდომი.

*

FIELDWIDTHS ცვლადი და ფიქსირებული სიგანე გაყოფა.

*

PROCINFO მასივი მიუწვდომელია.

*

გამოყენება RS როგორც რეგულარული გამოხატულება.

*

არ არის აღიარებული I / O გადამისამართების სპეციალური სახელები.

*

| და ოპერატორი თანადაფინანსების შესაქმნელად.

*

უნარი გაყოფილი ინდივიდუალური გმირები გამოყენებით null string როგორც ღირებულება FS და როგორც მესამე არგუმენტი გაყოფილი () .

*

სასურველი მეორე არგუმენტი მჭიდრო () ფუნქციასთან.

*

მატჩის () ფუნქციის მესამე მესამე არგუმენტი.

*

უნარი გამოიყენოს positional specifiers ერთად printf და sprintf () .

*

გამოყენების წაშლა მასივის წაშლა მთელი შინაარსი მასივი.

*

გამოყენების შემდეგი ფაილის უარი თქვას დამუშავების მიმდინარე შეყვანის ფაილი.

*

(ანუ) , სტეფტიმი () , strtonum () , სისმეტი () , სისტომი () () და xor () ფუნქციები.

*

ლოკალიზებადი სიმები.

*

ახალი ჩაშენებული ფუნქციების დამატება დინამიურად გაგრძელების () ფუნქციით.

AWK წიგნი არ განსაზღვრავს ახლო () ფუნქციის დაბრუნების მნიშვნელობას. Gawk 's close () დააბრუნებს მნიშვნელობას fclose (3), ან pclose (3), როდესაც დახურვის გამომავალი ფაილი ან მილის, შესაბამისად. ის დააბრუნებს პროცესის გასვლის სტატუსს, როდესაც შეყვანის მილის დახურვა. დაბრუნების ღირებულება -1-ის შემთხვევაში, თუ სახელწოდება, მილსადენი ან თანამონაწილე არ გაიხსნა გადამისამართებით.

როდესაც gawk ითვალისწინებს - ტრადიციულ ვარიანტს, თუ F -ის არგუმენტი -F პარამეტრია `` t '', მაშინ FS არის tab- სთვის . გაითვალისწინეთ, რომ აკრიფეთ gawk-F \ t- ი უბრალოდ იწვევს shell- ს `` t '', და არ გადაუვლის `` t '' -F- ს ვარიანტს. რადგან ეს საკმაოდ მახინჯი განსაკუთრებული შემთხვევაა, ეს არ არის ჩვეულებრივი ქცევა. ეს ქცევა არ ხდება იმ შემთხვევაში, თუ მითითებულია მითითება. მართლაც მიიღოს tab ხასიათი როგორც საველე გამყოფი, უმჯობესია გამოიყენოთ ერთი შეთავაზებები: gawk-F '\ t' ....

იხილეთ სხვა ბრძანებები : დაველოდოთ , lp , complete , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , განხილვა , motd , უფასო , lpr , execl , fdisk , at , ვინ , iwconfig , ifconfig , vgdisplay , ღია , lsmod , ntohs , mailq , მოკვლა , wtmp