เรียนรู้คำสั่ง Linux - gawk

ชื่อ

Gawk - รูปแบบการสแกนและการประมวลผลภาษา

สรุป

gawk [POSIX หรือ GNU style options] -f ไฟล์โปรแกรม [ - ] ...
Gawk [ตัวเลือกสไตล์ POSIX หรือ GNU] [ - ] ไฟล์ ข้อความของ โปรแกรม ...

pgawk [POSIX หรือ GNU style options] -f ไฟล์โปรแกรม [ - ] ไฟล์ ...
pgawk [ตัวเลือกสไตล์ POSIX หรือ GNU] [ - ] ไฟล์ ข้อความของ โปรแกรม ...

ลักษณะ

Gawk คือการใช้งานภาษาโครงการ AWK ของ GNU Project สอดคล้องกับคำนิยามของภาษาในภาษาสั่งการ POSIX 1003.2 และ Standard Utilities Standard รุ่นนี้จะขึ้นอยู่กับคำอธิบายใน ภาษาการเขียนโปรแกรม AWK โดย Aho Kernighan และ Weinberger โดยมีคุณลักษณะเพิ่มเติมที่พบใน UNIX awk ของ System V Release 4 Gawk ยังให้นามสกุล awk Bell Laboratories awer ล่าสุดและส่วนขยายเฉพาะของ GNU

Pgawk เป็นรูปแบบการ เล่า เรื่อง เป็นเหมือนกันในทุกวิถีทางที่จะมองนอก ลาด นอกทางยกเว้นโปรแกรมที่รันช้ากว่าและจะสร้างโปรไฟล์การดำเนินงานโดยอัตโนมัติในไฟล์ awkprof.out เมื่อทำเสร็จ ดูตัวเลือก --profile ด้านล่าง

บรรทัดคำสั่งประกอบด้วยตัวเลือกที่จะ ถาม ตัวเองข้อความของโปรแกรม AWK (ถ้าไม่ได้ระบุไว้ในตัวเลือก -f หรือ --file ) และค่าที่จะมีอยู่ในตัวแปร AWK ที่กำหนดไว้ล่วงหน้า ARGC และ ARGV

รูปแบบตัวเลือก

ตัวเลือก Gawk อาจเป็นตัวเลือกจดหมายแบบ POSIX แบบดั้งเดิมหรือตัวเลือกแบบยาวของ GNU ตัวเลือก POSIX เริ่มต้นด้วยคำเดียว "-" "ในขณะที่ตัวเลือกที่ยาวเริ่มต้นด้วย` `- '' มีตัวเลือกยาวสำหรับคุณลักษณะเฉพาะของ GNU และสำหรับคุณลักษณะที่กำหนดโดย POSIX

ต่อไปนี้เป็นมาตรฐาน POSIX ตัวเลือกพิเศษเฉพาะตัวจะถูกส่งผ่านอาร์กิวเมนต์ไปยังตัวเลือก -W หลายตัวเลือก -W อาจมีให้แต่ละตัวเลือก -W มีตัวเลือกที่ยาวพอสมควรตามรายละเอียดด้านล่าง อาร์กิวเมนต์ไปยังตัวเลือกที่ยาวจะใช้ร่วมกับตัวเลือกด้วยเครื่องหมาย = โดยไม่มีช่องว่างที่แทรกแซงหรืออาจมีการระบุไว้ในอาร์กิวเมนต์บรรทัดคำสั่งถัดไป ตัวเลือกที่ยาวอาจใช้คำย่อได้ตราบใดที่คำย่อยังคงเป็นเอกลักษณ์

ตัวเลือก

Gawk ยอมรับตัวเลือกต่อไปนี้ตามลำดับตัวอักษร

-F fs

- fs ฟิลด์คั่นใช้ fs สำหรับตัวคั่นฟิลด์อินพุต (ค่าของตัวแปรที่กำหนดไว้ล่วงหน้า FS )

-v var = val

--assign var = val กำหนดค่า val ให้ var ตัวแปรก่อนที่จะดำเนินการเริ่มต้นของโปรแกรม ค่าตัวแปรดังกล่าวมีให้กับกลุ่ม BEGIN ของโปรแกรม AWK

-f ไฟล์โปรแกรม

อ่าน แฟ้ม โปรแกรม AWK จากแฟ้ม โปรแกรมแฟ้ม แทนจากอาร์กิวเมนต์บรรทัดคำสั่งแรก อาจใช้ตัวเลือกหลายแบบ -f (หรือ --file )

-mn NNN

-mr NNN ตั้งค่าขีด จำกัด ของหน่วยความจำต่างๆให้เป็นค่า NNN ค่าสถานะ f จะกำหนดจำนวนฟิลด์สูงสุดและ r flag กำหนดขนาดบันทึกสูงสุด ทั้งสองแฟล็กและตัวเลือก -m มาจาก Bell Laboratories รุ่นวิจัย UNIX awk พวกเขาถูกละเลยโดย gawk เนื่องจาก gawk ไม่มีขีด จำกัด ที่กำหนดไว้ล่วงหน้า

-W compat

- แบบดั้งเดิม

--compat

- โหมดดั้งเดิม ทำงานในโหมดที่ เข้ากันได้ ในโหมดที่ใช้งานร่วมกัน gawk จะทำงานเหมือนกันกับ UNIX awk ; ไม่มีส่วนขยายเฉพาะของ GNU ที่รู้จัก การใช้ - แบบ ดั้งเดิม เป็นที่ต้องการมากกว่ารูปแบบอื่น ๆ ของตัวเลือกนี้ ดู ส่วนขยายของ GNU ที่ ด้านล่างสำหรับข้อมูลเพิ่มเติม

-W copyleft

- ลิขสิทธิ์

--copyleft

พิมพ์ สำเนา ข้อความข้อมูลลิขสิทธิ์ GNU ในเวอร์ชันมาตรฐานที่ออกมาตรฐานและออกจากโปรแกรมสำเร็จ

-W ตัวแปรการถ่ายโอนข้อมูล [ = ไฟล์ ]

- dump-variables [ = file ] พิมพ์รายการตัวแปรสากลประเภทและค่าสุดท้ายของ ไฟล์ หากไม่มี ไฟล์ ใดที่มีให้ gawk จะใช้ไฟล์ชื่อ awkvars.out ในไดเรกทอรีปัจจุบัน

การมีรายการตัวแปรทั่วโลกทั้งหมดเป็นวิธีที่ดีในการค้นหาข้อผิดพลาดทางภาษาในโปรแกรมของคุณ นอกจากนี้คุณยังใช้ตัวเลือกนี้หากคุณมีโปรแกรมขนาดใหญ่ที่มีฟังก์ชันมากมายและต้องการตรวจสอบว่าฟังก์ชันของคุณไม่ได้ใช้ตัวแปรส่วนกลางที่คุณหมายถึงแบบเฉพาะเจาะจง (นี่เป็นข้อผิดพลาดที่ง่ายโดยเฉพาะกับชื่อตัวแปรง่ายๆเช่น i , j และอื่น ๆ )

-W ช่วย

- การใช้งาน W

--ช่วยด้วย

พิมพ์สรุปสั้น ๆ ของตัวเลือกที่มีอยู่บนเอาต์พุตมาตรฐาน (ตาม มาตรฐานการเข้ารหัสของ GNU ตัวเลือกเหล่านี้จะทำให้การออกจากระบบสำเร็จทันที)

-W lint [ = เสียชีวิต ]

--lint [ = fatal ] ให้คำเตือนเกี่ยวกับโครงสร้างที่ไม่น่าไว้วางใจหรือไม่ใช่แบบพกพาสำหรับการใช้งานอื่น ๆ ของ WAWK ด้วยอาร์กิวเมนต์ตัวเลือกของ ร้ายแรง คำเตือนผ้าสำลีกลายเป็นข้อผิดพลาดร้ายแรง นี้อาจจะรุนแรง แต่การใช้งานอย่างแน่นอนจะสนับสนุนการพัฒนาโปรแกรมทำความสะอาด AWK

-W lint-old

- lint-old ให้คำเตือนเกี่ยวกับโครงสร้างที่ไม่ได้พกพาไปยัง Unix awk เวอร์ชันเดิม

-W gen-po

--gen-po สแกนและแยกโปรแกรม AWK และสร้างไฟล์รูปแบบ GNU .po บนเอาท์พุทมาตรฐานพร้อมด้วยรายการสำหรับสตริงที่สามารถปรับได้ทั้งหมดในโปรแกรม โปรแกรมตัวเองไม่ทำงาน ดูการกระจายข้อมูล gettext ของ GNU สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ . po ไฟล์

- ไม่ใช่ข้อมูลทศนิยม

- ไม่ใช่ข้อมูลทศนิยมเรียกใช้ ค่าฐานแปดและเลขฐานสิบหกในข้อมูลป้อนข้อมูล ใช้ตัวเลือกนี้ด้วยความระมัดระวังเป็นอย่างยิ่ง!

-W posix

--posix เปิดโหมด ความเข้ากันได้ โดยมีข้อ จำกัด เพิ่มเติมดังต่อไปนี้:

* * * *

\ x ลำดับหนีจะไม่รู้จัก

* * * *

เฉพาะพื้นที่และแท็บทำหน้าที่เป็นตัวคั่นฟิลด์เมื่อตั้งค่า FS เป็นช่องว่างเดียวบรรทัดใหม่ไม่ได้

* * * *

คุณไม่สามารถดำเนินการต่อได้ และ :

* * * *

ไม่รู้จัก ฟังก์ชัน คำเหมือนของ ฟังก์ชัน คำหลัก

* * * *

ไม่สามารถใช้ตัวดำเนินการ ** และ ** = แทน ^ และ ^ = ได้

* * * *

ฟังก์ชัน fflush () ไม่พร้อมใช้งาน

-W profile [ = prof_file ]

--profile [ = prof_file ] ส่งข้อมูลโปรไฟล์ไปยัง prof_file ค่าดีฟอลต์คือ awkprof.out เมื่อรันด้วย gawk โปรไฟล์นี้เป็นเพียงโปรแกรมพิมพ์ "pretty print" ของโปรแกรมเท่านั้น เมื่อรันด้วย pgawk โปรไฟล์จะมีการนับการดำเนินการของแต่ละคำสั่งในโปรแกรมในขอบด้านซ้ายและจำนวนการเรียกฟังก์ชันสำหรับแต่ละฟังก์ชันที่ผู้ใช้กำหนด

-W ช่วงเวลาใหม่

--re-interval อนุญาตให้ใช้ นิพจน์ช่วงเวลา ในการจับคู่นิพจน์ปกติ (ดู นิพจน์ทั่วไป ด้านล่าง) การแสดงออกของช่วงเวลาไม่สามารถใช้งานได้ในภาษา AWK มาตรฐาน POSIX เพิ่มไว้เพื่อทำให้ awk และ egrep สอดคล้องกัน อย่างไรก็ตามการใช้งานของพวกเขามีแนวโน้มที่จะทำลายโปรแกรม AWK เก่าดังนั้นจะให้เฉพาะพวกเขาหากพวกเขาร้องขอด้วยตัวเลือกนี้หรือเมื่อระบุ --posix

-W โปรแกรม ต้นฉบับ - ข้อความ

ใช้ โปรแกรมข้อความ เป็นรหัสแหล่งโปรแกรม AWK ตัวเลือกนี้ช่วยให้ง่ายต่อการผสมผสานของฟังก์ชันห้องสมุด (ใช้ผ่านตัวเลือก -f และ --file ) ด้วยรหัสต้นฉบับที่ป้อนในบรรทัดคำสั่ง มีจุดประสงค์หลักสำหรับโปรแกรม AWK ขนาดกลางถึงใหญ่ที่ใช้ในสคริปต์เชลล์

รุ่น -W

- เวอร์ชั่นพิมพ์ข้อมูลเวอร์ชั่นสำหรับสำเนาของ gawk ที่เอาต์พุตมาตรฐาน นี้เป็นประโยชน์ส่วนใหญ่สำหรับการรู้ว่าถ้าสำเนาปัจจุบันของคน เกียจคร้าน ในระบบของคุณขึ้นอยู่กับวันที่เกี่ยวกับสิ่งที่ Free Software Foundation กระจาย นอกจากนี้ยังมีประโยชน์เมื่อรายงานข้อบกพร่อง (ตาม มาตรฐานการเข้ารหัสของ GNU ตัวเลือกเหล่านี้จะทำให้การออกจากระบบสำเร็จทันที)

- สัญญาณจุดสิ้นสุดของตัวเลือก นี้จะเป็นประโยชน์เพื่อให้อาร์กิวเมนต์ต่อไปโปรแกรม AWK ตัวเองเพื่อเริ่มต้นด้วย `` - '' นี่คือส่วนใหญ่สำหรับความสอดคล้องกับอาร์กิวเมนต์การแยกวิเคราะห์การประชุมที่ใช้โดยโปรแกรม POSIX อื่น ๆ ส่วนใหญ่

ในโหมดความเข้ากันได้ตัวเลือกอื่น ๆ จะถูกตั้งค่าสถานะว่าไม่ถูกต้อง แต่จะถูกละเว้นไป ในการดำเนินการตามปกติตราบเท่าที่ข้อความของโปรแกรมได้รับมาแล้วตัวเลือกที่ไม่รู้จักจะถูกส่งผ่านไปยังโปรแกรม AWK ในอาร์เรย์ ARGV สำหรับการประมวลผล นี้มีประโยชน์อย่างยิ่งสำหรับการรันโปรแกรม AWK ผ่านกลไกการแปล `` #! '' ปฏิบัติการ

การดำเนินการโครงการ AWK

โปรแกรม AWK ประกอบด้วยชุดคำสั่งการออกแบบและคำจำกัดความของฟังก์ชั่นที่เลือก

pattern { คำสั่งการกระทำ }

ชื่อ ฟังก์ชัน ( รายการพารามิเตอร์ ) { งบ }

Gawk อ่านแหล่งโปรแกรมจาก แฟ้มโปรแกรม (s) ถ้าระบุจากอาร์กิวเมนต์เป็น --source หรือจากอาร์กิวเมนต์ที่ไม่ใช่ตัวเลือกแรกในบรรทัดคำสั่ง ตัวเลือก -f และ - source อาจถูกใช้หลายครั้งในบรรทัดคำสั่ง Gawk อ่านข้อความของโปรแกรมเหมือนกับว่า ไฟล์ต้นฉบับ ของ โปรแกรม และบรรทัดคำสั่งของบรรทัดคำสั่งทั้งหมดถูกรวมไว้ด้วยกัน วิธีนี้มีประโยชน์สำหรับการสร้างไลบรารีของฟังก์ชัน AWK โดยไม่ต้องใส่ไว้ในโปรแกรม AWK ใหม่แต่ละโปรแกรมที่ใช้งาน นอกจากนี้ยังมีความสามารถในการผสมฟังก์ชั่นห้องสมุดกับโปรแกรมบรรทัดคำสั่ง

ตัวแปรสภาพแวดล้อม AWKPATH ระบุพา ธ การค้นหาที่จะใช้เมื่อค้นหาไฟล์ต้นฉบับที่มีชื่อว่าตัวเลือก -f หากไม่มีตัวแปรนี้เส้นทางเริ่มต้นคือ ".: / usr / local / share / awk" (ไดเรกทอรีจริงอาจแตกต่างกันออกไปขึ้นอยู่กับว่ามีการสร้างและติดตั้งวุ้น) หากชื่อไฟล์ที่กำหนดให้กับตัวเลือก -f มีอักขระ `` / '' การค้นหาเส้นทางจะดำเนินการไม่ได้

Gawk ดำเนินการโปรแกรม AWK ตามลำดับต่อไปนี้ ขั้นแรกให้กำหนดตัวแปรทั้งหมดที่ระบุผ่านตัวเลือก -v จะดำเนินการ ขั้นต่อไป gawk จะ รวบรวมโปรแกรมลงในฟอร์มภายใน จากนั้น Gawk จะประมวลรหัสในบล็อก BEGIN (ถ้ามี) จากนั้นจะดำเนินการอ่านไฟล์แต่ละไฟล์ที่อยู่ในอาร์เรย์ ARGV ถ้าไม่มีไฟล์ชื่อในบรรทัดคำสั่งให้ gawk อ่านข้อมูลเข้ามาตรฐาน

ถ้าชื่อไฟล์ในบรรทัดคำสั่งมีรูปแบบ var = val มันจะถือว่าเป็นการกำหนดตัวแปร ตัวแปร var จะถูกกำหนดค่า val (เกิดขึ้นหลังจากมีการเรียกใช้งานบล็อก BEGIN ) การกำหนดตัวแปรบรรทัดคำสั่งมีประโยชน์มากสำหรับการกำหนดค่าตัวแปร AWK แบบไดนามิกเพื่อควบคุมวิธีการป้อนข้อมูลที่ถูกแบ่งออกเป็นฟิลด์และระเบียน นอกจากนี้ยังมีประโยชน์ในการควบคุมสถานะถ้าต้องมีการส่งผ่านข้อมูลมากกว่าหนึ่งไฟล์

หากค่าขององค์ประกอบหนึ่ง ๆ ของ ARGV ว่างเปล่า ( "" ) ให้ กวาด ข้ามไป

สำหรับแต่ละเรกคอร์ดในอินพุทให้ทดสอบเพื่อดูว่าตรงกับ รูปแบบ ใด ๆ ในโปรแกรม AWK สำหรับแต่ละรูปแบบที่ตรงกับระเบียนการ ดำเนินการที่ เกี่ยวข้องจะถูกดำเนินการ รูปแบบจะได้รับการทดสอบตามลำดับที่ปรากฏในโปรแกรม

สุดท้ายหลังจากหมดการป้อนข้อมูลเสร็จสมบูรณ์แล้ว gawk จะประมวลรหัสในส่วน END (s) (ถ้ามี)

ตัวแปรเร็กคอร์ดและฟิลด์

ตัวแปร AWK เป็นแบบไดนามิก เมื่อมีการใช้งานครั้งแรก ค่าของพวกเขาเป็นตัวเลขทศนิยมหรือสตริงหรือทั้งสองอย่างขึ้นอยู่กับว่าใช้งานอย่างไร AWK มีอาร์เรย์แบบหนึ่งมิติ อาร์เรย์ที่มีหลายมิติอาจได้รับการจำลอง ตัวแปรที่กำหนดไว้ล่วงหน้าหลายตัวถูกตั้งค่าให้เป็นโปรแกรมทำงาน เหล่านี้จะอธิบายตามความจำเป็นและสรุปไว้ด้านล่าง

ประวัติ

โดยปกติเรกคอร์ดจะถูกคั่นด้วยอักขระใหม่ คุณสามารถควบคุมวิธีการที่เรกคอร์ดถูกคั่นด้วยการกำหนดค่าให้กับ RS ตัวแปรภายใน ถ้า RS เป็นอักขระเดี่ยวตัวอักษรนั้นจะแยกระเบียน มิฉะนั้น RS เป็นนิพจน์ทั่วไป ข้อความในอินพุตที่ตรงกับนิพจน์ปกตินี้จะแยกระเบียนออก อย่างไรก็ตามในโหมดความเข้ากันได้เฉพาะอักขระตัวแรกของค่าสายอักขระที่ใช้สำหรับการแบ่งระเบียนเท่านั้น ถ้า RS ถูกตั้งค่าเป็นสตริง null ระเบียนจะถูกคั่นด้วยบรรทัดว่าง เมื่อ RS ถูกตั้งค่าเป็นสตริง null อักขระ newline จะทำหน้าที่เป็นตัวคั่นฟิลด์เสมอนอกเหนือจากค่าที่ FS ใด ๆ อาจมี

ทุ่ง

เมื่ออ่านบันทึกอินพุตแต่ละครั้งจะแบ่งบันทึกลงใน ช่อง โดยใช้ค่าของตัวแปร FS เป็นตัวคั่นฟิลด์ ถ้า FS เป็นอักขระเดี่ยวฟิลด์จะถูกคั่นด้วยอักขระนั้น ถ้า FS เป็นสตริง null แต่ละตัวจะกลายเป็นฟิลด์ที่แยกต่างหาก มิเช่นนั้น FS คาดว่าจะเป็นนิพจน์ทั่วไปเต็มรูปแบบ ในกรณีพิเศษที่ FS เป็นช่องทางเดียวฟิลด์จะถูกคั่นด้วยการเว้นวรรคและ / หรือแท็บและ / หรือบรรทัดใหม่ (แต่ดูการอภิปรายของ --posix ด้านล่าง) หมายเหตุ: ค่าของ IGNORECASE (ดูด้านล่าง) มีผลกับการแบ่งเขตข้อมูลเมื่อ FS เป็นนิพจน์ทั่วไปและวิธีแยกระเบียนออกเมื่อ RS เป็นนิพจน์ทั่วไป

ถ้าตัวแปร FIELDWIDTHS ถูกตั้งค่าเป็นรายการตัวเลขที่คั่นด้วยช่องว่างแต่ละฟิลด์จะมีความกว้างคงที่และ gawk จะ แบ่งระเบียนโดยใช้ความกว้างที่ระบุ ค่าของ FS จะถูกละเว้น การกำหนดค่าใหม่ให้กับ FS จะเป็นการลบล้างการใช้ FIELDWIDTHS และเรียกคืนลักษณะการทำงานเริ่มต้น

แต่ละฟิลด์ในเร็กคอร์ดอินพุตอาจมีการอ้างถึงตามตำแหน่ง $ 1 , $ 2 และอื่น ๆ $ 0 เป็นทั้งระเบียน ฟิลด์ต้องไม่ถูกอ้างอิงด้วยค่าคงที่:

n = 5
พิมพ์ $ n

พิมพ์ฟิลด์ที่ห้าในบันทึกการป้อนข้อมูล

ตัวแปร NF ถูกตั้งค่าเป็นจำนวนฟิลด์ทั้งหมดในบันทึกการป้อนข้อมูล

การอ้างอิงไปยังฟิลด์ที่ไม่มีอยู่จริง (เช่นฟิลด์หลังจาก $ NF ) สร้างสตริงที่เป็นโมฆะ อย่างไรก็ตามการกำหนดให้ฟิลด์ที่ไม่มีอยู่จริง (เช่น $ (NF + 2) = 5 ) จะเพิ่มมูลค่าของ NF โดยจะสร้างเขตข้อมูลที่แทรกแซงด้วยสตริงว่างเป็นค่าของพวกเขาและทำให้มูลค่าของ 0 เหรียญ ถูกคำนวณใหม่ด้วย ฟิลด์ที่ถูกคั่นด้วยค่า OFS การอ้างอิงไปยังฟิลด์ที่เป็นตัวเลขเชิงลบทำให้เกิดข้อผิดพลาดร้ายแรง การลดค่า NF ทำให้ค่าของช่องที่ผ่านมาค่าใหม่จะสูญหายไปและค่า 0 เหรียญที่ จะถูกคำนวณใหม่โดยมีฟิลด์ที่คั่นด้วยค่าของ OFS

การกำหนดค่าให้กับฟิลด์ที่มีอยู่ทำให้เร็กคอร์ดทั้งหมดถูกสร้างใหม่เมื่อมีการอ้างถึง 0 ดอลลาร์ ในทำนองเดียวกันการกำหนดค่าเป็น 0 เหรียญ ทำให้เร็กคอร์ดเป็น resplit สร้างค่าใหม่สำหรับฟิลด์

ตัวแปรภายใน

ตัวแปรที่มีอยู่ภายในของ Gawk คือ:

argc

จำนวนอาร์กิวเมนต์ของบรรทัดคำสั่ง (ไม่รวมถึงตัวเลือกในการเปิด ปากซ้ํา หรือแหล่งโปรแกรม)

ARGIND

ดัชนี ARGV ของไฟล์ปัจจุบันที่กำลังประมวลผล

ARGV

อาร์เรย์ของอาร์กิวเมนต์บรรทัดคำสั่ง อาร์เรย์ถูกจัดทำดัชนีจาก 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"] อาจเป็น / home / arnold ) การเปลี่ยนอาร์เรย์นี้ไม่มีผลกับสภาพแวดล้อมที่เห็นได้จากโปรแกรมที่ทำให้เกิดการวางไข่โดยการเปลี่ยนเส้นทางหรือ ระบบ ()

errno

หากมีข้อผิดพลาดของระบบเกิดขึ้นระหว่างการอ่านเส้นทาง getline หรือระหว่างการ ปิด () ERRNO จะมีสตริงอธิบายข้อผิดพลาด ค่านี้อาจแปลเป็นภาษาอื่นที่ไม่ใช่ภาษาอังกฤษ

FIELDWIDTHS

รายการ Fieldwidths ที่แยกกันอยู่ในพื้นที่สีขาว เมื่อตั้งค่า gawk จะแยกวิเคราะห์อินพุตในฟิลด์ที่มีความกว้างคงที่แทนการใช้ค่าของตัวแปร FS เป็นตัวคั่นฟิลด์

ชื่อไฟล์

ชื่อของไฟล์อินพุตปัจจุบัน หากไม่มีการระบุไฟล์ในบรรทัดคำสั่งค่าของ FILENAME คือ `` - '' อย่างไรก็ตาม FILENAME ไม่ได้กำหนดไว้ภายในบล็อก BEGIN (ยกเว้นที่กำหนดโดย getline )

FNR

หมายเลขบันทึกอินพุตในไฟล์อินพุตปัจจุบัน

FS

คั่นฟิลด์อินพุตเป็นช่องว่างตามค่าเริ่มต้น ดู ฟิลด์ ด้านบน

IgnoreCase

ควบคุมกรณีความไวของนิพจน์ทั่วไปและการดำเนินงานสตริง ถ้า IGNORECASE มีค่าที่ไม่ใช่ศูนย์จากนั้นเปรียบเทียบสตริงและการจับคู่รูปแบบในกฎการแบ่งฟิลด์กับ FS การแบ่งระเบียนด้วย RS การจับคู่นิพจน์ปกติกับ ~ และ ! ~ และ gensub () , gsub () , index () , match () , split () และ sub () ในตัวฟังก์ชันทั้งหมดละเว้นกรณีเมื่อทำการดำเนินการนิพจน์ปกติ หมายเหตุ: การ subscripting ของอาร์เรย์ ไม่มี ผลกระทบหรือเป็น ฟังก์ชัน asort ()

ดังนั้นหาก IGNORECASE ไม่เท่ากับศูนย์ / aB / ตรงกับสตริงทั้งหมด "ab" , "aB" , "Ab" และ "AB" เช่นเดียวกับตัวแปร AWK ทั้งหมดค่าเริ่มต้นของ IGNORECASE เป็นศูนย์ดังนั้นนิพจน์ทั่วไปและการทำงานของสตริงจะเป็นแบบ case-sensitive ภายใต้ Unix ชุดอักขระ Latin-1 ISO 8859-1 แบบเต็มใช้เมื่อละเว้นกรณี

ผ้าสำลี

ให้การควบคุมแบบไดนามิกของ - ตัวเลือกสีจากภายในโปรแกรม AWK เมื่อความจริงพิมพ์คำเตือนผ้าสำลี เมื่อเท็จก็ไม่ได้ เมื่อกำหนดค่าสายอักขระ "fatal" คำเตือนของ lint กลายเป็นข้อผิดพลาดร้ายแรงเหมือนกับ --intl = fatal ค่าที่แท้จริงอื่น ๆ เพียงพิมพ์คำเตือน

NF

จำนวนฟิลด์ในบันทึกข้อมูลปัจจุบัน

NR

จำนวนระเบียนทั้งหมดที่ได้รับจากการป้อนข้อมูล

OFMT

รูปแบบเอาต์พุตสำหรับตัวเลข "% .6g" โดยค่าเริ่มต้น

OFS

ตัวคั่นฟิลด์เอาต์พุตเป็นช่องว่างตามค่าเริ่มต้น

ORS

ตัวคั่นบันทึกผลลัพธ์โดยค่าเริ่มต้นเป็นบรรทัดใหม่

PROCINFO

องค์ประกอบของอาร์เรย์นี้ให้การเข้าถึงข้อมูลเกี่ยวกับโปรแกรม AWK ที่กำลังทำงานอยู่ ในบางระบบอาจมีองค์ประกอบในอาร์เรย์ "group1" ผ่าน " n กลุ่ม " สำหรับ n ซึ่งเป็นจำนวนกลุ่มเสริมที่มีในกระบวนการ ใช้ตัวดำเนินการ ใน เพื่อทดสอบองค์ประกอบเหล่านี้ องค์ประกอบต่อไปนี้ได้รับการประกันว่าพร้อมใช้งาน:

PROCINFO [ "egid"]

ค่าของการเรียกระบบ getegid (2)

PROCINFO [ "EUID"]

ค่าของ geteuid (2) การเรียกระบบ

PROCINFO [ "FS"]

"FS" ถ้าการแบ่งฟิลด์กับ FS มีผลหรือ "FIELDWIDTHS" ถ้าการแบ่งฟิลด์ด้วย FIELDWIDTHS มีผล

PROCINFO [ "GID"]

ค่าของสายระบบ getgid (2)

PROCINFO [ "pgrpid"]

รหัสกลุ่มกระบวนการของกระบวนการปัจจุบัน

PROCINFO [ "pid"]

รหัสกระบวนการของกระบวนการปัจจุบัน

PROCINFO [ "PPID"]

รหัสกระบวนการหลักของกระบวนการปัจจุบัน

PROCINFO [ "โพสต์"]

ค่าของสายระบบ getuid (2)

อาร์เอส

ตัวคั่นบันทึกอินพุตโดยค่าเริ่มต้นเป็นบรรทัดใหม่

RT

terminator บันทึก Gawk ตั้งค่า RT เป็นข้อความอินพุตที่ตรงกับอักขระหรือนิพจน์ทั่วไปที่ระบุโดย RS

rstart

ดัชนีของตัวละครตัวแรกที่จับคู่โดย match () ; 0 ถ้าไม่มีการจับคู่ (ซึ่งหมายความว่าดัชนีตัวอักษรเริ่มต้นที่หนึ่ง)

RLENGTH

ความยาวของสตริงที่จับคู่โดย match () ; -1 ถ้าไม่มีการแข่งขัน

SUBSEP

อักขระที่ใช้ในการแยก subscript จำนวนหนึ่งในอาร์เรย์องค์ประกอบโดยค่าเริ่มต้น "\ 034"

TEXTDOMAIN

โดเมนข้อความของโปรแกรม AWK; ใช้เพื่อหาคำแปลที่แปลเป็นภาษาท้องถิ่นสำหรับสตริงของโปรแกรม

อาร์เรย์

อาร์เรย์ถูกจัดกลุ่มด้วยนิพจน์ระหว่างวงเล็บเหลี่ยม ( [ และ ] ) ถ้านิพจน์เป็นรายการนิพจน์ ( expr , expr ... ) แล้ว subscript อาร์เรย์เป็นสตริงที่ประกอบด้วยการรวมกันของค่า (สตริง) ของนิพจน์แต่ละคั่นด้วยค่าของตัวแปร SUBSEP สถานที่นี้ใช้ในการจำลองอาร์เรย์ที่มีการคูณด้วยทวีคูณ ตัวอย่างเช่น:

i = "A"; j = "B"; k = "C"
x [i, j, k] = "สวัสดี, โลก \ n"

กำหนดสตริง "สวัสดี, โลก \ n" ให้กับองค์ประกอบของอาร์เรย์ x ซึ่งมีการจัดทำดัชนีโดยสตริง "A \ 034B \ 034C" อาร์เรย์ทั้งหมดใน AWK มีการเชื่อมโยงเช่นการจัดทำดัชนีตามค่าสตริง

โอเปอเรเตอร์พิเศษ ใน อาจใช้ในคำสั่ง if หรือ while เพื่อดูว่าอาร์เรย์มีดัชนีประกอบด้วยค่าเฉพาะหรือไม่

ถ้าอาร์เรย์การพิมพ์ (val in array) [val]

ถ้าอาร์เรย์มี subscripts หลายตัวให้ใช้ (i, j) ในอาร์เรย์

ใน โครงสร้างอาจใช้ในลูป สำหรับ วนซ้ำเพื่อทำซ้ำกับองค์ประกอบทั้งหมดของอาร์เรย์

องค์ประกอบอาจถูกลบออกจากอาร์เรย์โดยใช้คำสั่ง delete คำสั่ง ลบ อาจใช้เพื่อลบเนื้อหาทั้งหมดของอาร์เรย์โดยระบุชื่ออาเรย์โดยไม่มีดัชนีย่อย

การพิมพ์และการแปลงตัวแปร

ตัวแปรและฟิลด์อาจเป็นตัวเลข (ลอยตัว) หรือสตริงหรือทั้งสองอย่าง วิธีการตีความค่าของตัวแปรขึ้นอยู่กับบริบทของมัน ถ้าใช้ในนิพจน์ตัวเลขตัวเลขจะถือว่าเป็นตัวเลขหากใช้เป็นสตริงจะถือว่าเป็นสตริง

บังคับตัวแปรให้ถือว่าเป็นตัวเลขให้เพิ่ม 0 ขึ้นไป บังคับให้มันได้รับการปฏิบัติเป็นสตริง concatenate กับสตริง null

เมื่อต้องแปลงสตริงให้เป็นตัวเลขการแปลงทำได้โดยใช้ strtod (3) หมายเลขจะถูกแปลงเป็นสตริงโดยใช้ค่า CONVFMT เป็นสตริงรูปแบบสำหรับ sprintf (3) โดยมีค่าตัวเลขของตัวแปรเป็นอาร์กิวเมนต์ อย่างไรก็ตามแม้ว่าตัวเลขทั้งหมดใน AWK จะเป็นจุดลอยตัวค่าปริยายจะถูกแปลงเป็นจำนวนเต็มเสมอ ดังนั้นให้

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

ตัวแปร b มีค่าสตริงเท่ากับ "12" และไม่ใช่ "12.00"

Gawk ทำการเปรียบเทียบดังนี้: ถ้าตัวแปรสองตัวเป็นตัวเลขพวกเขาจะถูกเปรียบเทียบเป็นตัวเลข หากค่าหนึ่งเป็นตัวเลขและอีกอันหนึ่งมีค่าสายอักขระที่เป็น "ตัวเลขสตริง" การเปรียบเทียบจะทำด้วยตัวเลข มิฉะนั้นค่าตัวเลขจะถูกแปลงเป็นสตริงและทำการเปรียบเทียบสตริง สองสตริงถูกเปรียบเทียบเป็นสตริง โปรดทราบว่ามาตรฐาน POSIX ใช้แนวคิดของ `` ตัวเลขสตริง '' ทุกที่แม้จะเป็นสตริงที่ยังคงอยู่ อย่างไรก็ตามนี่เป็นสิ่งที่ไม่ถูกต้องอย่างชัดเจนและไม่ได้ทำเช่นนี้ (โชคดีที่ได้รับการแก้ไขในรุ่นถัดไปของมาตรฐานนี้)

โปรดสังเกตว่าค่าคงที่ของสตริงเช่น "57" ไม่ใช่ สตริงที่เป็นตัวเลข ความคิดของ `` ตัวเลขสตริง '' ใช้เฉพาะกับฟิลด์, การป้อนข้อมูล getline , FILENAME , องค์ประกอบ ARGV , องค์ประกอบ ENVIRON และองค์ประกอบของอาร์เรย์ที่สร้างโดย split () ซึ่งเป็นสตริงที่เป็นตัวเลข แนวคิดพื้นฐานคือการ ป้อนข้อมูลของผู้ใช้ และการป้อนข้อมูลของผู้ใช้เท่านั้นที่มีลักษณะเป็นตัวเลขควรได้รับการปฏิบัติเช่นนั้น

Uninitialized variables มีค่าตัวเลข 0 และค่าสตริง "" (null หรือ empty, string)

Octal และ Hexadecimal Constants

เริ่มต้นด้วยเวอร์ชัน 3.1 ของ gawk คุณอาจใช้ค่า C และรูปแบบเลขฐานสิบหกในรหัสแหล่งโปรแกรม AWK ของคุณ ตัวอย่างเช่นค่าฐานแปดคือ 011 เท่ากับทศนิยม 9 และค่าฐานสิบหก 0x11 มีค่าเท่ากับทศนิยม 17

สตริงคงที่

ค่าคงที่สตริงใน AWK คือลำดับของอักขระที่อยู่ระหว่างเครื่องหมายคำพูดคู่ ( "" ) ภายในสตริง ลำดับหนี บางอย่างเป็นที่รู้จักใน C. ดังต่อไปนี้:

\\

เครื่องหมายทับขวาแบบอักษร

\ a

อักขระ `` alert ''; ปกติอักขระ ASCII BEL

\ ข

Backspace

\ ฉ

ฟีดรูปแบบ.

\ n

ขึ้นบรรทัดใหม่

\ r

กลับรถ

\ t

แท็บแนวนอน

\ วี

แท็บแนวตั้ง

\ x ตัวเลขฐานสิบหก

อักขระที่แสดงโดยสตริงเลขฐานสิบหกตาม \ x ใน ANSIC ตัวเลขเลขฐานสิบหกต่อไปนี้ทั้งหมดจะถือว่าเป็นส่วนหนึ่งของลำดับการหลบหนี (คุณลักษณะนี้ควรบอกให้เราทราบเกี่ยวกับการออกแบบภาษาโดยคณะกรรมการ) เช่น "\ x1B" คืออักขระ ASCIIESC (escape)

\ ddd

อักขระที่แสดงด้วยลำดับเลข 1 หลัก 2 หลักหรือ 3 หลัก เช่น "\ 033" คืออักขระ ASCII ESC (escape)

\ c

ตัวอักษร c .

ลำดับการหลบหนีอาจถูกใช้ภายในนิพจน์ปกติอย่างต่อเนื่อง (เช่น / [\ t \ f \ n \ r \ v] / ตรงกับอักขระเว้นวรรค)

ในโหมดความเข้ากันได้อักขระที่แสดงโดยลำดับเลขทศนิยมฐานสิบหกและหกจะได้รับการปฏิบัติตามตัวอักษรเมื่อใช้ในค่าคงที่การแสดงออกปกติ ดังนั้น / a \ 52b / เท่ากับ / a \ * b / .

รูปแบบและการดำเนินการ

AWK เป็นภาษาที่เน้นบรรทัด รูปแบบมาก่อนแล้วจึงดำเนินการ งบดำเนินการอยู่ใน { และ } รูปแบบอาจหายไปหรือการดำเนินการอาจหายไป แต่ไม่ใช่ทั้งสองอย่าง ถ้ารูปแบบหายไปการดำเนินการจะดำเนินการสำหรับทุกระเบียนเดียวของการป้อนข้อมูล การดำเนินการที่ขาดหายไปจะเท่ากับ

{print}

ซึ่งจะพิมพ์บันทึกทั้งหมด

ความคิดเห็นเริ่มต้นด้วยอักขระ `` # '' และดำเนินการต่อไปจนกว่าจะถึงตอนท้ายของบรรทัด บรรทัดว่างอาจถูกใช้เพื่อแยกงบ โดยปกติคำสั่งจะลงท้ายด้วย newline อย่างไรก็ตามนี่ไม่ใช่กรณีสำหรับบรรทัดที่ลงท้ายด้วย ``, '', { , ? , : , && หรือ || . บรรทัดสิ้นสุดใน ทำ หรือ อื่น ๆ ยังมีคำสั่งของพวกเขาโดยอัตโนมัติต่อไปในบรรทัดต่อไปนี้ ในกรณีอื่น ๆ บรรทัดสามารถต่อได้โดยการสิ้นสุดด้วย 'ซึ่งในกรณีนี้บรรทัดใหม่จะถูกละเลย

คำพูดหลายคำอาจวางไว้ในบรรทัดเดียวโดยแยกคำว่า ``; '' ซึ่งใช้กับทั้งสองข้อความภายในส่วนการกระทำของคู่การทำงานของรูปแบบ (กรณีปกติ) และกับงบแบบการดำเนินการด้วยตัวเอง

รูปแบบ

รูปแบบ AWK อาจเป็นรูปแบบใดรูปแบบหนึ่งดังต่อไปนี้:

BEGIN END / นิพจน์ปกติ / รูปแบบ การแสดงออกเชิงสัมพันธ์ && pattern pattern || ลวดลาย ? ลวดลาย : ลวดลาย ( ลวดลาย ) ! pattern pattern1 , pattern2

BEGIN และ END เป็นรูปแบบพิเศษสองรูปแบบซึ่งไม่ได้ทดสอบกับอินพุท ส่วนการดำเนินการของรูปแบบ BEGIN ทั้งหมดจะถูกรวมเข้าด้วยกันเสมือนว่างบทั้งหมดถูกเขียนขึ้นในบล็อก BEGIN เดียว พวกเขาจะดำเนินการก่อนที่จะมีการป้อนข้อมูลใด ๆ ที่จะอ่าน ในทำนองเดียวกันบล็อก END ทั้งหมดจะถูกรวมเข้าด้วยกันและทำงานเมื่อป้อนข้อมูลทั้งหมดหมด (หรือเมื่อดำเนินการคำสั่ง exit ) รูปแบบ BEGIN และ END ไม่สามารถใช้ร่วมกับรูปแบบอื่น ๆ ในการแสดงออกของรูปแบบ รูปแบบ BEGIN และ END ไม่สามารถมีส่วนการทำงานที่หายไปได้

สำหรับ / นิพจน์ทั่วไป / รูปแบบคำสั่งที่เกี่ยวข้องจะถูกดำเนินการสำหรับระเบียนข้อมูลขาเข้าที่ตรงกับนิพจน์ทั่วไป นิพจน์ปกติจะเหมือนกับข้อความใน egrep (1) และสรุปไว้ด้านล่าง

นิพจน์เชิงสัมพันธ์ อาจใช้โอเปอเรเตอร์ใด ๆ ที่กำหนดไว้ด้านล่างในส่วนการดำเนินการ เหล่านี้โดยทั่วไปทดสอบว่าฟิลด์บางอย่างตรงกับนิพจน์ปกติบางอย่าง

&& , || , และ ! ตัวดำเนินการเป็นตรรกะและตรรกะ OR และตรรกะไม่ตามลำดับเช่นเดียวกับ C. พวกเขาทำการประเมินลัดวงจรเช่นเดียวกับใน C และใช้สำหรับการรวมการแสดงออกของรูปแบบดั้งเดิมมากขึ้น เช่นเดียวกับภาษาส่วนใหญ่วงเล็บอาจใช้เพื่อเปลี่ยนลำดับการประเมิน

ตัวแบบ ?: เป็นเหมือนตัวดำเนินการเดียวกันใน C. ถ้ารูปแบบแรกเป็นจริงรูปแบบที่ใช้ในการทดสอบเป็นรูปแบบที่สองมิฉะนั้นจะเป็นที่สาม มีการประเมินรูปแบบที่สองและสามเท่านั้น

รูปแบบ pattern1 , pattern2 ของนิพจน์จะเรียกว่า pattern ช่วง จะตรงกับระเบียนการป้อนข้อมูลทั้งหมดที่เริ่มต้นด้วยระเบียนที่ตรงกับ pattern1 และดำเนินการต่อไปจนกว่าระเบียนที่ตรงกับ pattern2 รวม ไม่รวมกับการแสดงออกของรูปแบบอื่น ๆ

นิพจน์ทั่วไป

นิพจน์ปกติเป็นชนิดขยายที่พบใน egrep ประกอบด้วยอักขระดังนี้:

ตรงกับ nonmetacharacter c .

\ ค

ตรงกับตัวอักษร c .

.

ตรงกับตัวอักษรใด ๆ รวมทั้ง บรรทัดใหม่

^

ตรงกับจุดเริ่มต้นของสตริง

$

ตรงกับจุดสิ้นสุดของสตริง

[ abc ... ]

ตัวอักษรที่ตรงกับตัวอักษร abc ใด ๆ ... .

[^ abc ... ]

รายการอักขระที่ไม่เหมาะสมตรงกับอักขระยกเว้น abc ...

r1 | r2

alternation: จับคู่ r1 หรือ r2

r1r2

concatenation: จับคู่ r1 จากนั้น r2

r +

ตรงกับ r หรือมากกว่า

r *

ตรงกับศูนย์หรือมากกว่า r 's

r ?

ตรงกับศูนย์หรือหนึ่ง r

( r )

การจัดกลุ่ม: จับคู่ r

r { n }

r { n ,}

r { n , m } ตัวเลขหนึ่งหรือสองตัวภายในวงเล็บแสดงถึงการ แสดงออกของช่วงเวลา หากมีตัวเลขหนึ่งในวงเล็บปีกกานิพจน์ปกตินิวก่อน n จะถูกทำซ้ำ n ครั้ง ถ้ามีตัวเลขสองตัวคั่นด้วยเครื่องหมายจุลภาค r จะถูกทำซ้ำ n ถึง m ครั้ง หากมีตัวเลขหนึ่งตัวตามด้วยจุลภาค r จะถูกทำซ้ำอย่างน้อย n ครั้ง

การแสดงออกของช่วงจะใช้ได้เฉพาะเมื่อมีการระบุ --posix หรือ --re-interval ไว้ในบรรทัดคำสั่ง

\ Y

ตรงกับสตริงว่างที่จุดเริ่มต้นหรือจุดสิ้นสุดของคำ

\ B

ตรงกับสตริงว่างภายในคำ

\ <

ตรงกับสตริงว่างที่จุดเริ่มต้นของคำ

\>

ตรงกับสตริงว่างที่ท้ายคำ

w \

ตรงกับตัวอักษรที่ประกอบด้วยตัวพิมพ์เล็ก ๆ (ตัวอักษรตัวเลขหรือขีดล่าง)

\ W

ตรงกับตัวอักษรที่ไม่ได้เป็นคำส่วนประกอบใด ๆ

\ `

ตรงกับสตริงว่างที่จุดเริ่มต้นของบัฟเฟอร์ (สตริง)

\ '

ตรงกับสตริงว่างที่ส่วนท้ายของบัฟเฟอร์

ลำดับหนีที่ถูกต้องในค่าคงที่ของสตริง (ดูด้านล่าง) ยังมีผลในนิพจน์ปกติ

คลาสตัวอักษร เป็นคุณลักษณะใหม่ที่นำมาใช้ในมาตรฐาน POSIX ชั้นอักขระเป็นสัญกรณ์พิเศษสำหรับการอธิบายรายการของอักขระที่มีแอตทริบิวต์ที่เฉพาะเจาะจง แต่ที่ตัวอักษรที่เกิดขึ้นจริงอาจแตกต่างกันไปในแต่ละประเทศและ / หรือจากชุดอักขระที่ตั้งอักขระ ตัวอย่างเช่นความคิดของสิ่งที่เป็นตัวอักษรที่แตกต่างกันในสหรัฐอเมริกาและในประเทศฝรั่งเศส

คลาสอักขระจะใช้ได้เฉพาะกับนิพจน์ทั่วไป ภายใน วงเล็บของรายการอักขระเท่านั้น ชั้นเรียนอักขระประกอบด้วย [: , คำหลักแสดงถึงชั้นเรียนและ :] ชั้นเรียนอักขระที่กำหนดโดยมาตรฐาน POSIX คือ

[: alnum:]

อักขระตัวอักษรและตัวเลข

[: อัลฟา:]

อักขระตัวอักษร

[: ว่างเปล่า:]

อักขระพื้นที่หรือแท็บ

[: Cntrl:]

ควบคุมอักขระ

[: บาท:]

อักขระตัวเลข

[:กราฟ:]

อักขระที่สามารถพิมพ์และมองเห็นได้ (ช่องว่างสามารถพิมพ์ได้ แต่ไม่สามารถมองเห็นได้ในขณะที่ a เป็นทั้งสองด้าน)

[: ต่ำ:]

ตัวอักษรตัวพิมพ์เล็ก

[:พิมพ์:]

อักขระที่พิมพ์ได้ (อักขระที่ไม่ใช่ตัวควบคุม)

[: punct:]

อักขระเครื่องหมายวรรคตอน (อักขระที่ไม่ใช่ตัวอักษรตัวเลขอักขระควบคุมหรืออักขระช่องว่าง)

[: พื้นที่:]

อักขระพื้นที่ (เช่นช่องว่างแท็บและฟอร์มป้อนเพื่อระบุชื่อบางส่วน)

[: บน:]

ตัวอักษรตัวพิมพ์ใหญ่

[: xdigit:]

อักขระที่เป็นตัวเลขฐานหกหลัก

ตัวอย่างเช่นก่อนมาตรฐาน POSIX เพื่อให้ตรงกับตัวอักษรและตัวเลขคุณจะต้องเขียน / [A-Za-z0-9] / . หากชุดอักขระของคุณมีอักขระตามตัวอักษรอื่น ๆ อักขระนี้จะไม่ตรงกับตัวอักษรเหล่านี้และหากชุดอักขระของคุณเรียงกันต่างจาก ASCII การทำเช่นนี้อาจไม่ตรงกับอักขระตัวอักษรและตัวเลข ASCII ด้วยอักขระ POSIX คุณสามารถเขียน / [[alnum:]] / และตรงกับตัวอักษรและตัวเลขในชุดอักขระของคุณ

สองลำดับพิเศษเพิ่มเติมสามารถปรากฏในรายการอักขระ สิ่งเหล่านี้ใช้กับชุดอักขระที่ไม่ใช่ ASCII ซึ่งสามารถมีสัญลักษณ์เดียว (เรียกว่า องค์ประกอบที่จับคู่ ) ซึ่งมีอักขระมากกว่าหนึ่งตัวรวมทั้งอักขระหลายตัวที่เทียบเท่ากับ การเรียง ลำดับหรือการจัดเรียงวัตถุประสงค์ (เช่นในภาษาฝรั่งเศสคำว่า "e" ธรรมดาและคำว่า "หลุมฝังศพ" มีค่าเท่ากับ)

การเปรียบเทียบสัญญลักษณ์

สัญลักษณ์การเทียบเคียงเป็นองค์ประกอบเรียงตัวหลายตัวที่อยู่ใน [. และ .] ตัวอย่างเช่นถ้า ch เป็นองค์ประกอบที่รวบรวมแล้ว [[.ch.]] เป็นนิพจน์ทั่วไปที่ตรงกับองค์ประกอบที่จับคู่นี้ขณะที่ [ch] เป็นนิพจน์ทั่วไปที่ตรงกับ c หรือ h

ชั้น Equivalence

คลาสความเท่าเทียมกันคือชื่อเฉพาะโลแคลสำหรับรายการอักขระที่เทียบเท่า ชื่อนี้มีอยู่ใน [= และ =] ตัวอย่างเช่นชื่อ e อาจถูกใช้เพื่อแสดงถึง `` e, '' e ',' 'และ `` e`' ในกรณีนี้ [[= e =]] เป็นนิพจน์ทั่วไปที่ ตรงกับของ e , e ' หรือ e`

คุณลักษณะเหล่านี้มีคุณค่ามากสำหรับสถานที่ที่ไม่ได้พูดภาษาอังกฤษ ไลบรารีที่ใช้สำหรับการจับคู่นิพจน์ปกติในปัจจุบันเท่านั้นที่รู้จักอักขระ POSIX; พวกเขาไม่รู้จัก collating สัญลักษณ์หรือเทียบเท่าคลาส

\ y , \ B , \ < , \> , \ w , \ W , \ ` , และ \ ' เป็นส่วนขยายตามสิ่งอำนวยความสะดวกในไลบรารีนิพจน์ทั่วไปของ GNU

ตัวเลือกบรรทัดคำสั่งต่าง ๆ ควบคุมวิธีการตีความอักขระในนิพจน์ปกติ

ไม่มีตัวเลือก

ในกรณีเริ่มต้นให้ gawk ให้สิ่งอำนวยความสะดวกทั้งหมดของการแสดงออกปกติ POSIX และตัวดำเนินการนิพจน์ทั่วไปของ GNU ที่อธิบายไว้ด้านบน อย่างไรก็ตามนิพจน์ช่วงไม่ได้รับการสนับสนุน

--posix

มีการสนับสนุนเฉพาะการแสดงผลปกติของ POSIX เท่านั้นผู้ให้บริการ GNU ไม่ได้เป็นพิเศษ (เช่น \ w ตรงกับตัวอักษร w ) อนุญาตการเว้นวรรค

--traditional

นิพจน์ทั่วไปของ Unix awk มีการจับคู่แบบปกติ ตัวดำเนินการ GNU ไม่ได้เป็นพิเศษการแสดงช่วงไม่พร้อมใช้งานและไม่เป็นอักขระ POSIX ( [[: alnum:]] และอื่น ๆ ) อักขระที่อธิบายโดยลำดับเลขฐานสิบหกและเลขฐานสิบหกจะได้รับการปฏิบัติตามตัวอักษรแม้ว่าจะเป็นนิพจน์ทั่วไป

--re-ช่วงเวลา

อนุญาตการแสดงออกของช่วงเวลาในการแสดงออกปกติแม้ว่าจะมีการให้บริการแบบเดิม ๆ

การปฏิบัติ

คำอธิบายการดำเนินการอยู่ในเครื่องหมายวงเล็บ { และ } คำสั่ง Action ประกอบด้วยข้อมูลการกำหนดตามเงื่อนไขและข้อความการวนซ้ำตามปกติในหลายภาษา ตัวดำเนินการงบควบคุมและงบอินพุต / เอาต์พุตที่พร้อมใช้งานมีลวดลายอยู่หลังเครื่องหมาย C

ผู้ประกอบการ

ผู้ประกอบการใน AWK ตามลำดับความสำคัญที่ลดลง ได้แก่

( ... )

หมวดหมู่

$

การอ้างอิงภาคสนาม

++ -

การเพิ่มขึ้นและการลดทั้งคำนำหน้าและ postfix

^

การยกกำลัง ( ** อาจใช้และ ** = สำหรับผู้ดำเนินการมอบหมาย)

+ -!

Unary plus, unary ลบและการปฏิเสธตรรกะ

* /%

คูณหารและโมดูลัส

+ -

การบวกและการลบ

ช่องว่าง

การต่อสายอักขระ

<>

<=> =

! = == ตัวดำเนินการเกี่ยวกับความสัมพันธ์ปกติ

~! ~

การจับคู่นิพจน์ทั่วไปการจับคู่ที่ไม่ถูกต้อง หมายเหตุ: อย่าใช้นิพจน์ปกติอย่างสม่ำเสมอ ( / foo / ) ทางซ้ายมือของ ~ หรือ ! ~ ใช้เพียงด้านขวามือเท่านั้น นิพจน์ / foo / ~ exp มีความหมายเช่นเดียวกับ (($ 0 ~ / foo /) ~ exp ) นี่ ไม่ใช่ สิ่งที่ตั้งใจ

ใน

การเป็นสมาชิกอาร์เรย์

&&

ตรรกะ AND

||

เหตุผล OR

?:

นิพจน์เงื่อนไข C นี้มีรูปแบบ expr1 ? expr2 : expr3 ถ้า expr1 เป็น true ค่าของนิพจน์คือ expr2 มิฉะนั้นจะเป็น expr3 มีเพียงหนึ่งใน expr2 และ expr3 เท่านั้น

= + = - =

* = / =% = ^ = การมอบหมาย ทั้งการมอบหมายแบบสัมบูรณ์ ( var = value ) และการกำหนดผู้ให้บริการ (รูปแบบอื่น ๆ ) ได้รับการสนับสนุน

งบควบคุม

งบควบคุมมีดังนี้:

คำสั่ง if ( condition ) statement [ else statement ] while ( condition ) statement ทำ คำสั่ง while ( condition ) สำหรับ statement ( expr1 ; expr2 ; expr3 ) สำหรับ คำสั่ง break ( ) ใน อาร์เรย์ ลบ อาร์เรย์ [ index ] ลบ อาร์เรย์ ออก [ expression ] { งบ }

ข้อความ I / O

งบอินพุต / เอาท์พุตมีดังนี้:

ปิด ( ไฟล์ [ , วิธีการ ] )

ปิดไฟล์ท่อหรือกระบวนการร่วม ทางเลือกที่ควรใช้เมื่อปิดปลายด้านหนึ่งของท่อสองทางไปสู่กระบวนการร่วม ต้องเป็นค่าสตริงอย่างใดอย่างหนึ่ง "ถึง" หรือ "จาก"

getline

ตั้งค่า $ 0 จากบันทึกข้อมูลถัดไป ตั้งค่า NF , NR , FNR

getline < ไฟล์

ตั้งค่า $ 0 จากบันทึกถัดไปของ ไฟล์ ตั้ง NF

getline var

ตั้งค่า var จากบันทึกข้อมูลถัดไป ตั้ง NR , FNR

getline var < file

ตั้งค่า var จากระเบียนถัดไปของ ไฟล์

คำสั่ง getline [ var ]

เรียกใช้ คำสั่ง piping ผลผลิตทั้งเป็น $ 0 หรือ var ตามข้างต้น

คำสั่ง | & getline [ var ]

เรียกใช้ คำสั่ง เป็น co-process piping ผลลัพธ์เป็น 0 หรือ var ตามข้างต้น Co-processes คือส่วนขยายของ Gawk

ต่อไป

หยุดการประมวลผลบันทึกข้อมูลปัจจุบัน บันทึกอินพุทถัดไปจะอ่านและการประมวลผลเริ่มด้วยรูปแบบแรกในโปรแกรม AWK ถ้าถึงจุดสิ้นสุดของข้อมูลป้อนข้อมูล END blocks (s) ถ้ามีการทำงาน

nextfile

หยุดประมวลผลไฟล์อินพุตปัจจุบัน บันทึกอินพุตถัดไปที่อ่านมาจากไฟล์ข้อมูลถัดไป FILENAME และ ARGIND ได้รับการอัพเดต FNR จะถูกรีเซ็ตเป็น 1 และการประมวลผลจะเริ่มต้นด้วยรูปแบบแรกในโปรแกรม AWK ถ้าถึงจุดสิ้นสุดของข้อมูลป้อนข้อมูล END blocks (s) ถ้ามีการทำงาน

พิมพ์

พิมพ์บันทึกปัจจุบัน ระเบียนที่ส่งออกถูกยกเลิกด้วยค่าของตัวแปร ORS

พิมพ์ expr-list

พิมพ์นิพจน์ นิพจน์แต่ละตัวจะถูกคั่นด้วยค่าของตัวแปร OFS ระเบียนที่ส่งออกถูกยกเลิกด้วยค่าของตัวแปร ORS

พิมพ์ ไฟล์ expr-list >

พิมพ์นิพจน์ใน ไฟล์ นิพจน์แต่ละตัวจะถูกคั่นด้วยค่าของตัวแปร OFS ระเบียนที่ส่งออกถูกยกเลิกด้วยค่าของตัวแปร ORS

printf fmt, expr-list

รูปแบบและการพิมพ์

printf fmt, expr-list > ไฟล์

จัดรูปแบบและพิมพ์ลงใน ไฟล์

ระบบ ( cmd-line )

ดำเนินการคำสั่ง cmd-line และส่งคืนสถานะการออก (ซึ่งอาจไม่มีให้บริการในระบบที่ไม่ใช่ POSIX)

fflush ( [ ไฟล์ ] )

ล้างข้อมูลบัฟเฟอร์ใด ๆ ที่เกี่ยวข้องกับไฟล์เอาต์พุตแบบเปิดหรือ ไฟล์ ท่อ หาก ไฟล์ หายไป ไฟล์ มาตรฐานจะถูกล้างออก ถ้า ไฟล์ เป็นสตริงที่ว่างเปล่าไฟล์ที่ส่งออกและท่อที่เปิดทั้งหมดจะมีบัฟเฟอร์ล้างออก

อนุญาตการเปลี่ยนเส้นทางเอาต์พุตเพิ่มเติมสำหรับการ พิมพ์ และ printf

พิมพ์ ... >> file

ผนวกเอาท์พุท ไฟล์

พิมพ์ ... คำสั่ง

เขียนบนท่อ

พิมพ์ ... | & คำสั่ง

ส่งข้อมูลไปยัง co-process

คำสั่ง getline จะส่งกลับ 0 ที่ท้ายไฟล์และ -1 เมื่อเกิดข้อผิดพลาด เมื่อข้อผิดพลาด ERRNO มีสตริงอธิบายปัญหา

หมายเหตุ: ถ้าใช้ pipe หรือ co-process เพื่อ getline หรือจาก print printf ภายใน loop คุณ ต้อง ใช้ close () เพื่อสร้างอินสแตนซ์ใหม่ของคำสั่ง AWK ไม่ปิดท่อหรือร่วมกระบวนการโดยอัตโนมัติเมื่อพวกเขากลับมาที่ EOF

คำชี้แจง printf

คำสั่ง printf และ sprintf () รุ่น AWK (ดูด้านล่าง) ยอมรับรูปแบบข้อกำหนดการแปลงต่อไปนี้:

c%

อักขระ ASCII ถ้าอาร์กิวเมนต์ที่ใช้สำหรับ % c เป็นตัวเลขจะถือว่าเป็นอักขระและพิมพ์ มิฉะนั้นอาร์กิวเมนต์จะถือว่าเป็นสตริงและมีการพิมพ์เฉพาะอักขระตัวแรกของสตริงเท่านั้น

% d , % i

เลขทศนิยม (ส่วนจำนวนเต็ม)

% e,% E

จำนวนจุดลอยตัวของฟอร์ม [-] d.ddddde [+ -] วัน รูปแบบ % E ใช้ E แทน e

f%

จำนวนจุดลอยตัวของรูปแบบ [-] ddd.dddddd

% g,% G

ใช้การแปลง % e หรือ % f แล้วแต่ระยะเวลาใดจะสั้นกว่าด้วยค่าศูนย์ที่ไม่มีนัยสำคัญ รูปแบบ % G ใช้ % E แทน % e

o%

หมายเลขฐานแปดยังไม่ได้ลงชื่อ (ยังมีจำนวนเต็ม)

% u หมายเลขทศนิยมที่ไม่ได้ลงชื่อ (อีกครั้งจำนวนเต็ม)

% s

สายอักขระ

% x,% X

เลขฐานสิบหกที่ไม่ได้ลงชื่อ (จำนวนเต็ม) รูปแบบ % X ใช้ ABCDEF แทน abcdef

%%

อักขระ % ตัวเดียว; อาร์กิวเมนต์ไม่ถูกแปลง

พารามิเตอร์เพิ่มเติมอาจอยู่ระหว่าง % และตัวควบคุม:

นับ $

ใช้อาร์กิวเมนต์ count 'ที่จุดนี้ในการจัดรูปแบบ นี่เรียกว่าตัว ระบุตำแหน่ง และมีจุดมุ่งหมายเพื่อใช้กับสตริงรูปแบบที่แปลแล้วไม่ใช่ในข้อความเดิมของโปรแกรม AWK เป็นการต่อขยาย

-

นิพจน์ควรถูกทิ้งให้ถูกต้องภายในเขตข้อมูล

ช่องว่าง

สำหรับการแปลงเป็นตัวเลขให้บวกค่าบวกกับช่องว่างและค่าลบที่มีเครื่องหมายลบ

+

เครื่องหมายบวกที่ใช้ก่อนตัวปรับความกว้าง (ดูด้านล่าง) กล่าวว่าควรระบุเครื่องหมายสำหรับการแปลงเป็นตัวเลขเสมอแม้ว่าข้อมูลจะได้รับการจัดรูปแบบเป็นบวกก็ตาม เครื่องหมาย + จะลบล้างการปรับพื้นที่

#

ใช้ "แบบอื่น ๆ " สำหรับตัวอักษรควบคุมบางตัว สำหรับ % o ให้ศูนย์นำ สำหรับ % x และ % X ให้ป้อน 0x หรือ 0X สำหรับผลลัพธ์ที่ไม่ใช่ศูนย์ สำหรับ % e , % E และ % f ผลลัพธ์จะมีจุดทศนิยมเสมอ สำหรับ % g และ % G ศูนย์หน้าจะไม่ถูกนำออกจากผลลัพธ์

0

นำ 0 (ศูนย์) ทำหน้าที่เป็นแฟล็กซึ่งระบุว่าเอาท์พุทควรเบาะด้วยศูนย์แทนที่จะเป็นช่องว่าง ใช้กับรูปแบบการแสดงผลที่ไม่ใช่ตัวเลข แฟล็กนี้มีผลเฉพาะเมื่อความกว้างของฟิลด์กว้างกว่าค่าที่จะพิมพ์เท่านั้น

ความกว้าง

ฟิลด์ควรเบาะเพื่อความกว้างนี้ โดยปกติช่องจะมีช่องว่าง ถ้ามีการใช้ค่าสถานะ 0 แล้วจะมีการเบาะที่ศูนย์

. PREC

หมายเลขที่ระบุความแม่นยำในการใช้เมื่อพิมพ์ สำหรับรูปแบบ % e , % E และ % f จำนวนนี้จะระบุจำนวนหลักที่คุณต้องการพิมพ์ทางด้านขวาของจุดทศนิยม สำหรับรูปแบบ % g และ % G จะระบุจำนวนหลักที่มีนัยสำคัญที่สุด สำหรับรูปแบบ % d , % o , % i , % u , % x และ % X จะระบุจำนวนขั้นต่ำที่จะพิมพ์ สำหรับ % s จะระบุจำนวนอักขระสูงสุดจากสตริงที่ควรจะพิมพ์

ความ สามารถในการปรับ ความกว้าง และความสามารถในการทำงานของขั้นตอน ANSI C printf () ได้รับการสนับสนุน * ในตำแหน่งของ ความกว้าง หรือข้อกำหนด เบื้องต้น ทำให้ค่าของพวกเขาถูกนำมาจากรายการอาร์กิวเมนต์เพื่อ printf หรือ sprintf () หากต้องการใช้ตัวระบุตำแหน่งที่มีความกว้างหรือความแม่นยำแบบไดนามิกให้ป้อน จำนวน เงิน $ หลังจากเครื่องหมาย * ในสตริงรูปแบบ ตัวอย่างเช่น "% 3 $ * 2 $. * 1 $ s"

ชื่อไฟล์พิเศษ

เมื่อทำ I / O redirection จาก print หรือ printf ลงในไฟล์หรือผ่าน getline จากไฟล์ gawk จะ จดจำชื่อไฟล์บางชนิดภายใน ชื่อไฟล์เหล่านี้อนุญาตให้เข้าถึง descriptor ไฟล์แบบเปิดที่สืบทอดมาจากกระบวนการหลักของ gawk (โดยปกติคือเชลล์) ชื่อไฟล์เหล่านี้อาจถูกใช้ในบรรทัดคำสั่งเพื่อตั้งชื่อไฟล์ข้อมูล ชื่อไฟล์คือ:

/ dev / stdin

อินพุตมาตรฐาน

/ dev / stdout

เอาต์พุตมาตรฐาน

/ dev / stderr

เอาต์พุตข้อผิดพลาดมาตรฐาน

/ dev / fd / n

ไฟล์ที่เชื่อมโยงกับ descriptor ไฟล์เปิด 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

สงวนไว้สำหรับใช้ในอนาคต

ชื่อไฟล์พิเศษอื่น ๆ จะช่วยให้สามารถเข้าถึงข้อมูลเกี่ยวกับกระบวนการทำงานที่ คล่องแคล่ว ชื่อไฟล์เหล่านี้ล้าสมัยแล้ว ใช้อาร์เรย์ PROCINFO เพื่อรับข้อมูลที่ระบุ ชื่อไฟล์คือ:

/ dev / pid

การอ่านไฟล์นี้จะส่งคืนรหัสกระบวนการของกระบวนการปัจจุบันในรูปแบบทศนิยมและสิ้นสุดด้วยบรรทัดใหม่

/ dev / PPID

การอ่านไฟล์นี้จะส่งคืนรหัสกระบวนการหลักของกระบวนการปัจจุบันในรูปแบบทศนิยมและสิ้นสุดด้วยบรรทัดใหม่

/ dev / pgrpid

การอ่านไฟล์นี้จะส่งคืนรหัสกลุ่มกระบวนการของกระบวนการปัจจุบันในรูปแบบทศนิยมและสิ้นสุดด้วยบรรทัดใหม่

/ dev / ผู้ใช้

การอ่านไฟล์นี้จะส่งกลับระเบียนเดียวที่ถูกยกเลิกด้วยบรรทัดใหม่ ช่องจะถูกคั่นด้วยช่องว่าง $ 1 เป็นค่าของ getuid (2) system call, $ 2 คือค่าของ geteuid (2) system call, $ 3 เป็นค่าของ getgid (2) system call และ $ 4 เป็นค่า getegid (2) สายระบบ หากมีช่องใด ๆ เพิ่มเติมพวกเขาจะเป็น ID กลุ่มที่ส่งกลับโดย getgroups (2) หลายกลุ่มอาจไม่ได้รับการสนับสนุนในทุกระบบ

ฟังก์ชั่นตัวเลข

AWK มีฟังก์ชันเลขคณิตต่อไปนี้:

atan2 ( y , x )

ส่งกลับค่า arctangent ของ y / x เป็นเรเดียน

cos ( expr )

แสดงโคไซน์ของ expr ซึ่งอยู่ในเรเดียน

exp ( expr )

ฟังก์ชันเลขชี้กำลัง

int ( expr )

ตัดทอนเป็นจำนวนเต็ม

บันทึก ( expr )

ฟังก์ชันลอการิทึมธรรมชาติ

แรนด์ ()

แสดงตัวเลขสุ่มระหว่าง 0 ถึง 1

บาป ( expr )

ส่งคืนค่าไซน์ของ expr ซึ่งอยู่ในเรเดียน

sqrt ( expr )

ฟังก์ชันรากที่สอง

srand ( [ expr ] )

ใช้ expr เป็นเมล็ดพันธุ์ใหม่สำหรับเครื่องกำเนิดไฟฟ้าหมายเลขสุ่ม ถ้าไม่มี expr ใช้เวลาของวัน ค่าที่ส่งกลับคือเมล็ดก่อนหน้าสำหรับเครื่องกำเนิดไฟฟ้าหมายเลขสุ่ม

ฟังก์ชันสตริง

Gawk มีฟังก์ชันสตริงในตัวต่อไปนี้:

asort ( s [ , d ] )

ส่งกลับจำนวนขององค์ประกอบในอาร์เรย์ ของ แหล่งที่มา s เนื้อหาของ s จะถูกเรียงลำดับโดยใช้กฎปกติของ gawk เพื่อเปรียบเทียบค่าและดัชนีของค่าเรียงลำดับของ s จะถูกแทนที่ด้วยจำนวนเต็มตามลำดับโดยเริ่มต้นด้วย 1. หากระบุปลายทางปลายทาง d ไว้แล้ว s จะถูกทำสำเนาเป็นครั้งแรกใน d , แล้ว d จะถูกจัดเรียงออกจากดัชนีของอาร์เรย์ต้นฉบับไม่เปลี่ยนแปลง

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

ค้นหาสตริงเป้าหมาย t สำหรับการจับคู่ของนิพจน์ปกติ r ถ้า h คือสตริงที่ขึ้นต้นด้วย g หรือ G ให้แทนที่การจับคู่ทั้งหมดของ r ด้วย s มิฉะนั้น h คือจำนวนที่ระบุว่าตรงกับ r แทน ถ้าไม่มีให้ t จะใช้แทน $ 0 แทน ในข้อความแทน s ลำดับ \ n โดยที่ n เป็นตัวเลขตั้งแต่ 1 ถึง 9 อาจใช้เพื่อระบุเฉพาะข้อความที่ตรงกับ n 'parenthesized subexpression ลำดับ \ 0 แสดงข้อความที่ตรงทั้งหมดเช่นเดียวกับอักขระ & . ซึ่งแตกต่างจาก sub () และ gsub () , สายอักขระที่แก้ไขจะถูกส่งกลับตามผลลัพธ์ของฟังก์ชันและสตริงเป้าหมายเดิมจะ ไม่มีการ เปลี่ยนแปลง

gsub ( r , s [ , t ] )

สำหรับสตริงย่อยที่ตรงกับนิพจน์ปกติ r ในสตริง t ให้แทนสตริง s และส่งคืนจำนวนการแทน ถ้า t ไม่ได้ให้ใช้ $ 0 และ ในข้อความแทนที่จะถูกแทนที่ด้วยข้อความที่จับคู่กันจริงๆ ใช้ \ & เพื่อให้ได้ตัวอักษร & . (ต้องพิมพ์เป็น "\\ &" ) ดู GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ เพื่อการอภิปรายเกี่ยวกับกฎสำหรับเครื่องหมาย & และเครื่องหมายทับขวาในข้อความแทนที่ของ sub () , gsub () และ gensub ( )

ดัชนี ( s , t )

ส่งกลับค่าดัชนีของสตริง t ในสตริง s หรือ 0 ถ้าไม่มี t (ซึ่งหมายความว่าดัชนีตัวอักษรเริ่มต้นที่หนึ่ง)

ความยาว ( [ s ] )

ส่งกลับความยาวของสตริง s หรือความยาวของ $ 0 ถ้าไม่มี s ให้

match ( s , r [ , a ] )

ส่งกลับค่าตำแหน่งในตำแหน่งที่นิพจน์ทั่วไป r เกิดขึ้นหรือ 0 ถ้าไม่มี r และตั้งค่า RSTART และ RLENGTH โปรดทราบว่าคำสั่งอาร์กิวเมนต์เป็นเช่นเดียวกับตัวดำเนินการ ~ : str ~ re หากมีการจัดเรียง a จะมี การ ล้างข้อมูล a และจากนั้นองค์ประกอบ 1 ถึง n จะเต็มไปด้วยส่วนของ s ที่ตรงกับการแสดงออกย่อยย้ำในเรขาคณิตใน r องค์ประกอบที่ 0 ของ a ประกอบด้วยส่วนของ s ที่ จับคู่โดยนิพจน์ปกติทั้ง r

แบ่ง ( s , a [ , r ] )

แยกสตริง s ลงในอาร์เรย์บนนิพจน์ปกติ r และส่งกลับจำนวนฟิลด์ ถ้า r ถูกละไว้ FS จะถูกใช้แทน อาร์เรย์ a จะถูกล้างออกก่อน การแบ่งแยกจะทำงานเหมือนกับการแบ่งฟิลด์ที่อธิบายข้างต้น

sprintf ( fmt , expr-list )

พิมพ์ รายการ expr ตาม fmt และส่งกลับสตริงผลลัพธ์

strtonum ( str )

ตรวจสอบ str และส่งกลับค่าตัวเลข ถ้า str เริ่มต้นด้วย 0 นำ strtonum () สันนิษฐานว่า str เป็นจำนวนฐานแปด ถ้า str เริ่มต้นด้วย 0x หรือ 0X ชั้นนำ strtonum () สันนิษฐานว่า str เป็นเลขฐานสิบหก

sub ( r , s [ , t ] )

เช่นเดียวกับ gsub () แต่จะแทนที่เฉพาะสตริงย่อยที่ตรงกัน

substr ( s , i [ , n ] )

ส่งค่าสตริง substring ของ n จำนวน มากที่สุดที่เริ่มต้นที่ i ถ้า n ถูกละไว้ส่วนที่เหลือจะถูกใช้

tolower ( str )

ส่งสำเนาสตริงสตริงพร้อมด้วยตัวพิมพ์ใหญ่ทั้งหมดใน str ที่ แปลเป็นคู่ฉบับของกรณีที่มีจำนวนต่ำลง อักขระที่ไม่เป็นตัวอักษรจะไม่มีการเปลี่ยนแปลง

toupper ( str )

ส่งสำเนาสตริงสตริงพร้อมด้วยอักขระตัวพิมพ์เล็กทั้งหมดใน str ที่ แปลเป็นคู่ฉบับของกรณีที่เกี่ยวข้อง อักขระที่ไม่เป็นตัวอักษรจะไม่มีการเปลี่ยนแปลง

ฟังก์ชั่นเวลา

เนื่องจากหนึ่งในโปรแกรมหลักของโปรแกรม AWK คือการประมวลผลไฟล์บันทึกที่มีข้อมูลแสตมป์เวลา Gawk จะมีฟังก์ชันต่อไปนี้ในการรับแสตมป์เวลาและจัดรูปแบบเหล่านั้น

mktime ( datepec )

Rurns datepec เป็นแสตมป์เวลาในรูปแบบเดียวกับที่ส่งกลับโดย systime () datepec คือสตริงที่มีรูปแบบ YYYY MM DD HMS MM SS [DST] เนื้อหาของสตริงเป็นตัวเลขหกหรือเจ็ดตามลำดับตลอดทั้งปีรวมถึงศตวรรษเดือนตั้งแต่ 1 ถึง 12 วันของเดือนตั้งแต่วันที่ 1 ถึง 31 ชั่วโมงของวันจาก 0 ถึง 23 นาทีจาก 0 ถึง 59 และตัวที่สองจาก 0 ถึง 60 และแฟลกไทม์ประหยัดเวลาที่เลือก ค่าของตัวเลขเหล่านี้ไม่จำเป็นต้องอยู่ในช่วงที่กำหนด ตัวอย่างเช่นชั่วโมงที่ -1 หมายถึง 1 ชั่วโมงก่อนเที่ยงคืน กำหนดเกริ่นปฏิทินจุดเริ่มต้นเป็นศูนย์ด้วยปีที่ 0 ก่อนหน้าปีที่ 1 และปีที่ -1 ปีก่อนหน้า 0. เวลาจะถือว่าอยู่ในเขตเวลาท้องถิ่น ถ้าค่าสถานะการปรับเวลาในเวลากลางวันเป็นบวกจะถือว่าเวลาเป็นเวลาออมแสง ถ้าศูนย์เวลาจะถือว่าเป็นเวลามาตรฐาน; และหากค่าลบ (ค่าดีฟอลต์) mktime () พยายามที่จะกำหนดว่าเวลาในการปรับฤดูกาลจะมีผลในเวลาที่กำหนดหรือไม่ ถ้า datepec ไม่มีองค์ประกอบเพียงพอหรือถ้าเวลาที่ได้รับผลอยู่นอกช่วง mktime () จะส่งกลับค่า -1

strftime ( [ รูปแบบ [ , timestamp ]] ))

รูปแบบการ ประทับเวลา ตามข้อกำหนดใน รูปแบบ การ ประทับเวลา ควรเป็นรูปแบบเดียวกับที่ส่งกลับโดย systime () หากไม่มีการ ประทับเวลา ใช้เวลาปัจจุบันของวัน หาก รูปแบบ หายไปจะใช้รูปแบบเริ่มต้นที่เทียบเท่ากับผลลัพธ์ของ วันที่ (1) ดูข้อกำหนดของฟังก์ชัน strftime () ใน ANSI C สำหรับการแปลงรูปแบบที่ได้รับการรับรองว่าพร้อมใช้งาน รุ่นโดเมนสาธารณะของ strftime (3) และหน้าสำหรับคนมาด้วย ถ้ามีการใช้เวอร์ชันดังกล่าวเพื่อสร้าง gawk การแปลงทั้งหมดที่อธิบายไว้ในหน้า man นั้นพร้อมที่จะ แสดง

SYSTIME ()

แสดงเวลาปัจจุบันของวันเป็นจำนวนวินาทีนับจากยุค (1970-01-01 00:00:00 UTC ในระบบ POSIX)

ฟังก์ชั่นการใช้งาน Bit Manipulations

เริ่มต้นด้วยเวอร์ชัน 3.1 ของ gawk มีฟังก์ชันการจัดการบิตต่อไปนี้ พวกเขาทำงานโดยการแปลงค่าทศนิยมสองจุดให้ เป็น จำนวนเต็ม ยาวที่ไม่ระบุชื่อ ดำเนินการและแปลงผลลัพธ์กลับเป็นจุดลอย ฟังก์ชั่นคือ:

และ ( v1 , v2 )

ส่งกลับค่าบิต AND ของค่าที่ระบุโดย v1 และ v2

compl ( val )

ส่งกลับค่าบิตของ val

lshift ( val , count )

ส่งกลับค่า val เปลี่ยนไปทางซ้ายตาม count bits

หรือ ( v1 , v2 )

ส่งกลับค่าบิตหรือค่าที่ระบุโดย v1 และ v2

rshift ( val , count )

ส่งกลับค่าของ val เปลี่ยนไปทางขวาโดย count bits

xor ( v1 , v2 )

ส่งคืน XOR บิตของค่าที่ระบุโดย v1 และ v2

ฟังก์ชันการทำให้เป็นสากล

เริ่มจากเวอร์ชัน 3.1 ของ gawk คุณสามารถใช้ฟังก์ชันต่อไปนี้จากภายในโปรแกรม AWK สำหรับการแปลสตริงในขณะดำเนินการ ดูรายละเอียดแบบเต็มได้ที่ GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ

bindtextdomain ( ไดเรกทอรี [ โดเมน ] )

ระบุไดเร็กทอรีที่ gawk มองหาไฟล์. mo หาก ไม่ได้หรือไม่สามารถวางในตำแหน่ง `` มาตรฐาน '' (เช่นในระหว่างการทดสอบ) จะส่งกลับไดเรกทอรีที่ โดเมน ถูกผูกไว้ ''

โดเมน ดีฟอลต์คือค่าของ TEXTDOMAIN ถ้า ไดเรกทอรี เป็นสตริง null ( "" ), แล้ว bindtextdomain () จะส่งกลับค่าการผูกปัจจุบันสำหรับ โดเมนที่ ระบุ

dcgettext ( string [ , domain [ , category ]] )

แสดงการแปล สตริง ในโดเมนโดเมนข้อความสำหรับหมวดหมู่ภาษาท้องถิ่น ค่าดีฟอลต์สำหรับ โดเมน คือค่าปัจจุบันของ TEXTDOMAIN ค่าเริ่มต้นสำหรับ หมวดหมู่ คือ "LC_MESSAGES"

หากคุณระบุค่าสำหรับ ประเภท ต้องเป็นสตริงเท่ากับหนึ่งในประเภทสถานที่ที่อธิบายไว้ใน GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ คุณต้องระบุโดเมนแบบข้อความ ใช้ TEXTDOMAIN ถ้าคุณต้องการใช้โดเมนปัจจุบัน

dcngettext ( string1 , string2 , number [ , domain [ , category ]] )

ส่งกลับรูปแบบพหูพจน์ที่ใช้สำหรับ จำนวน การแปล สตริง 1 และ สตริง 2 ในโดเมนโดเมนข้อความสำหรับหมวดหมู่ประเภทภาษาท้องถิ่น ค่าดีฟอลต์สำหรับ โดเมน คือค่าปัจจุบันของ TEXTDOMAIN ค่าเริ่มต้นสำหรับ หมวดหมู่ คือ "LC_MESSAGES"

หากคุณระบุค่าสำหรับ ประเภท ต้องเป็นสตริงเท่ากับหนึ่งในประเภทสถานที่ที่อธิบายไว้ใน GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ คุณต้องระบุโดเมนแบบข้อความ ใช้ TEXTDOMAIN ถ้าคุณต้องการใช้โดเมนปัจจุบัน

ฟังก์ชั่นที่กำหนดโดยผู้ใช้

หน้าที่ใน AWK มีดังต่อไปนี้:

ชื่อ ฟังก์ชัน ( รายการพารามิเตอร์ ) { งบ }

ฟังก์ชันจะถูกเรียกใช้เมื่อเรียกใช้จากนิพจน์ภายในรูปแบบหรือการกระทำ พารามิเตอร์ที่แท้จริงที่ให้มาในการเรียกฟังก์ชันจะใช้เพื่อสร้างอินบอกพารามิเตอร์ที่เป็นทางการซึ่งประกาศในฟังก์ชัน อาร์เรย์จะถูกส่งผ่านโดยการอ้างอิงตัวแปรอื่น ๆ จะถูกส่งผ่านตามค่า

เนื่องจากฟังก์ชันไม่ได้เป็นส่วนหนึ่งของภาษา AWK แต่บทบัญญัติสำหรับตัวแปรในเครื่องเป็นแบบเงอะงะ: มีการประกาศเป็นพารามิเตอร์พิเศษในรายการพารามิเตอร์ การประชุมคือการแยกตัวแปรท้องถิ่นออกจากตัวแปรจริงด้วยช่องว่างพิเศษในรายการพารามิเตอร์ ตัวอย่างเช่น:

ฟังก์ชัน f (p, q, a, b) # a และ b เป็นภาษาท้องถิ่น {... } / abc / {... ; f (1, 2); ... }

ต้องใช้วงเล็บปีกกาในการเรียกฟังก์ชันเพื่อทำตามชื่อฟังก์ชันโดยทันทีโดยไม่ต้องเว้นวรรคสีขาว นี่คือการหลีกเลี่ยงความคลุมเครือกับผู้ประกอบการ concatenation ข้อ จำกัด นี้ไม่ได้ใช้กับฟังก์ชันภายในที่ระบุไว้ด้านบน

ฟังก์ชั่นอาจเรียกกันและกันและอาจเรียกซ้ำ พารามิเตอร์ของฟังก์ชันที่ใช้เป็นตัวแปรภายในจะถูกเตรียมใช้งานให้กับสตริงที่เป็นโมฆะและเลขศูนย์ตามคำเรียกฟังก์ชัน

ใช้ expr return เพื่อส่งคืนค่าจากฟังก์ชัน ค่าที่ส่งกลับไม่ได้กำหนดหากไม่มีค่าใด ๆ หรือถ้าฟังก์ชันส่งกลับโดย `` ล้มปิด ''

หากมีการระบุ --int แล้ว gawk จะเตือนเกี่ยวกับการเรียกฟังก์ชันที่ไม่ได้กำหนดไว้ในขณะแยกวิเคราะห์แทนที่จะใช้ในขณะดำเนินการ การเรียกฟังก์ชันที่ไม่ได้กำหนดไว้ในขณะดำเนินการเป็นข้อผิดพลาดร้ายแรง

คำ func อาจถูกใช้แทนที่ตำแหน่ง

โหลดฟังก์ชั่นใหม่ ๆ ตามแบบไดนามิก

เริ่มต้นด้วยเวอร์ชัน 3.1 ของ Gawk คุณสามารถเพิ่มฟังก์ชันแบบ built-in ใหม่ ๆ ในแบบไดนามิกให้กับ interpreter ที่ใช้งานได้ รายละเอียดทั้งหมดอยู่นอกเหนือขอบเขตของหน้าคู่มือนี้ ดู GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ สำหรับรายละเอียด

นามสกุล ( วัตถุ ฟังก์ชัน )

เชื่อมโยงไฟล์วัตถุที่ใช้ร่วมกันแบบไดนามิกโดย อ็อบเจ็กต์ และเรียกใช้ ฟังก์ชัน ในอ็อบเจ็กต์เพื่อดำเนินการเริ่มต้น เหล่านี้ควรทั้งให้เป็นสตริง ส่งกลับค่าที่ส่งกลับตาม ฟังก์ชัน

ฟังก์ชันนี้มีให้และจัดทำเป็นเอกสารใน GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ แต่ทุกอย่างเกี่ยวกับคุณลักษณะนี้มีแนวโน้มที่จะเปลี่ยนแปลงในรุ่นถัดไป เราขอแนะนำอย่างยิ่งว่าคุณจะไม่ใช้คุณลักษณะนี้สำหรับสิ่งที่คุณไม่ต้องการทำใหม่

SIGNALS

pgawk ยอมรับสองสัญญาณ SIGUSR1 ทำให้เกิดการถ่ายโอนข้อมูลโปรไฟล์และกองการเรียกฟังก์ชันไปยังไฟล์โปรไฟล์ซึ่งเป็นไฟล์ awkprof.out หรือไฟล์ใดก็ตามที่มีชื่ออยู่ด้วยตัวเลือก --profile จากนั้นก็จะวิ่งต่อไป SIGHUP ทำให้เกิดการถ่ายโอนข้อมูลโปรไฟล์และกองการเรียกฟังก์ชันและออกจาก

ตัวอย่าง

พิมพ์และจัดเรียงชื่อล็อกอินของผู้ใช้ทั้งหมด: BEGIN {FS = ":"} {print $ 1 | "เรียงลำดับ"} นับจำนวนบรรทัดในไฟล์: {nlines ++} END {print nlines} นำบรรทัดแต่ละบรรทัดมาเรียงตามหมายเลขในไฟล์: {print FNR, $ 0} จำนวนที่ต่อกันและบรรทัด (รูปแบบในธีม): {print NR, $ 0}

internalization

ค่าคงที่สตริงคือลำดับของอักขระที่อยู่ในเครื่องหมายคำพูดคู่ ในสภาพแวดล้อมที่ไม่ใช่ภาษาอังกฤษพูดเป็นไปได้ในการทำเครื่องหมายสตริงในโปรแกรม AWK เนื่องจากต้องการแปลเป็นภาษาธรรมชาติพื้นเมือง สตริงดังกล่าวถูกทำเครื่องหมายไว้ในโปรแกรม AWK ด้วยเครื่องหมายขีดล่าง (`` _ '') ตัวอย่างเช่น,

Gawk 'BEGIN {print "สวัสดี, โลก"}'

เสมอพิมพ์ สวัสดี, โลก แต่,

Gawk 'BEGIN {print _ "สวัสดี, โลก"}'

อาจพิมพ์ bonjour, Monde ในฝรั่งเศส

มีหลายขั้นตอนที่เกี่ยวข้องในการผลิตและดำเนินการโปรแกรม AWK ที่สามารถปรับได้

1

เพิ่มการดำเนินการ BEGIN เพื่อกำหนดค่าให้กับตัวแปร TEXTDOMAIN เพื่อตั้งค่าโดเมนข้อความเป็นชื่อที่เชื่อมโยงกับโปรแกรมของคุณ


BEGIN {TEXTDOMAIN = "myprog"}

ซึ่งจะช่วยให้สามารถหาไฟล์. mo ที่ เชื่อมโยงกับโปรแกรมของคุณได้ หากไม่มีขั้นตอนนี้ให้ใช้ ข้อความใน โดเมนข้อความซึ่งจะไม่มีคำแปลสำหรับโปรแกรมของคุณ

2

ทำเครื่องหมายสตริงทั้งหมดที่ควรจะแปลด้วยเครื่องหมายขีดล่างชั้นนำ

3

ถ้าจำเป็นให้ใช้ ฟังก์ชัน dcgettext () และ / หรือ bindtextdomain () ในโปรแกรมของคุณตามความเหมาะสม

4

เรียกใช้ gawk --gen-po -f myprog.awk> myprog.po เพื่อสร้างไฟล์. o สำหรับโปรแกรมของคุณ

5

ให้การแปลที่เหมาะสมและสร้างและติดตั้งไฟล์. m

คุณลักษณะการทำให้เป็นสากลมีการอธิบายอย่างละเอียดใน GAWK: การเขียนโปรแกรม AWK ที่มีประสิทธิภาพ

ความเข้ากันได้ Posix

เป้าหมายหลักของ Gawk คือการเข้ากันได้กับมาตรฐาน POSIX รวมถึง UNIX awk เวอร์ชันล่าสุด ด้วยเหตุนี้ตัวแทนจำหน่ายจึงรวมคุณลักษณะที่มองเห็นได้ของผู้ใช้ต่อไปนี้ซึ่งไม่ได้อธิบายไว้ในหนังสือ AWK แต่เป็นส่วนหนึ่งของเวอร์ชัน awk ของ Bell Laboratories และอยู่ในมาตรฐาน POSIX

หนังสือระบุว่าการกำหนดตัวแปรบรรทัดคำสั่งจะเกิดขึ้นเมื่อ awk จะเปิดอาร์กิวเมนต์เป็นไฟล์ซึ่งเป็นไฟล์ที่ดำเนินการหลังจากบล็อก BEGIN อย่างไรก็ตามในการใช้งานก่อนหน้านี้เมื่อการกำหนดดังกล่าวปรากฏก่อนชื่อไฟล์ใด ๆ การมอบหมายงานจะเกิดขึ้น ก่อน ที่บล็อก BEGIN ถูกเรียกใช้งาน แอ็พพลิเคชันขึ้นอยู่กับคุณลักษณะ `` นี้ '' เมื่อ awk ถูกเปลี่ยนเพื่อให้ตรงกับเอกสารประกอบของมันแล้วตัวเลือก -v สำหรับการกำหนดตัวแปรก่อนการเรียกใช้โปรแกรมถูกเพิ่มเพื่อรองรับแอพพลิเคชั่นที่ขึ้นอยู่กับพฤติกรรมเก่า (คุณลักษณะนี้ได้รับการยอมรับจากทั้ง Bell Laboratories และนักพัฒนา GNU)

ตัวเลือก -W สำหรับคุณสมบัติการใช้งานเฉพาะคือจากมาตรฐาน POSIX

เมื่อประมวลผลอาร์กิวเมนต์ให้ใช้ตัวเลือกพิเศษ `` - '' เพื่อแจ้งจุดสิ้นสุดของอาร์กิวเมนต์ ในโหมดความเข้ากันได้จะเตือนเกี่ยวกับ แต่ละเว้นตัวเลือกที่ไม่ได้กำหนดไว้ ในการดำเนินการตามปกติอาร์กิวเมนต์ดังกล่าวจะถูกส่งต่อไปยังโปรแกรม AWK เพื่อให้ประมวลผล

หนังสือ AWK ไม่ได้กำหนดค่าที่ส่งคืนของ srand () มาตรฐาน POSIX จะส่งคืนเมล็ดพันธุ์ที่ใช้เพื่อให้สามารถติดตามลำดับเลขสุ่มได้ ดังนั้น srand () ใน gawk ยังส่งกลับเมล็ดปัจจุบัน

คุณลักษณะใหม่อื่น ๆ ได้แก่ : การใช้ตัวเลือก -f (จาก MKS awk ); อาร์เรย์ ENVIRON ; \ a และ \ v ลำดับการหลบหนี (ทำอย่างชาญฉลาดและป้อนกลับเข้าไปในห้องทดลองเบลล์รุ่น); tolower () และ toupper () built-in functions (จาก Bell Laboratories รุ่น); และข้อกำหนดการแปลง ANSI C ใน printf (ทำครั้งแรกในเวอร์ชัน Bell Laboratories)

Historical Features / คุณสมบัติทางประวัติศาสตร์

มีคุณลักษณะสองประการของการใช้งาน AWK ในอดีตที่สนับสนุนการอ่าน ปากกา แรกเป็นไปได้ที่จะเรียก ความยาว () ฟังก์ชันในตัวไม่เพียง แต่มีอาร์กิวเมนต์ไม่มี แต่แม้ไม่มีวงเล็บ! ดังนั้น

a = length # Holy Algol 60, แบทแมน!

เป็นเช่นเดียวกับอย่างใดอย่างหนึ่ง

a = length ()
a = length ($ 0)

คุณลักษณะนี้ถูกทำเครื่องหมายว่า `` เลิกใช้ '' ในมาตรฐาน POSIX และมีการแจ้งเตือนเกี่ยวกับการใช้งานหากมีการระบุ --int ในบรรทัดคำสั่ง

คุณลักษณะอื่น ๆ คือการใช้คำสั่ง continue หรือ break statement ที่อยู่นอกร่างกายของ while หรือ for loop การใช้งาน AWK แบบดั้งเดิมได้ถือว่าการใช้งานดังกล่าวเทียบเท่ากับข้อความ ถัดไป Gawk สนับสนุนการใช้งานนี้ถ้า --traditional ได้รับการระบุ

ส่วนขยายของ GNU

Gawk มีส่วนขยายจำนวนมากสำหรับ POSIX awk พวกเขาอธิบายไว้ในส่วนนี้ สามารถขยายการขยายทั้งหมดที่อธิบายไว้ที่นี่ได้โดยการเรียกใช้ gawk ด้วยตัวเลือก --traditional

คุณลักษณะต่อไปนี้ของ Gawk ไม่พร้อมใช้งานใน POSIX awk

* * * *

ไม่มีการค้นหาเส้นทางสำหรับไฟล์ที่ตั้งชื่อโดยใช้ตัวเลือก -f ดังนั้นตัวแปรสภาพแวดล้อม AWKPATH ไม่ได้เป็นพิเศษ

* * * *

ลำดับการหลบหนี \ x (ปิดใช้งานกับ --posix )

* * * *

ฟังก์ชัน fflush () (ปิดใช้งานกับ --posix )

* * * *

ความสามารถในการดำเนินการต่อเส้นหลังจากที่ ? และ : (ปิดใช้งานกับ --posix )

* * * *

มีค่า octal และ hexadecimal ในโปรแกรม AWK

* * * *

ตัวแปร ARGIND , BINMODE , ERRNO , LINT , RT และ TEXTDOMAIN ไม่มีความพิเศษ

* * * *

ไม่มี ตัวแปร IGNORECASE และเอฟเฟ็กต์ด้านใดด้านหนึ่ง

* * * *

FIELDWIDTHS การ แบ่งฟิลด์ ตัวแปรและความกว้างคงที่

* * * *

อาร์เรย์ PROCINFO ไม่พร้อมใช้งาน

* * * *

การใช้ RS เป็นนิพจน์ทั่วไป

* * * *

ไม่รู้จักชื่อไฟล์พิเศษที่มีอยู่สำหรับการเปลี่ยนเส้นทาง I / O

* * * *

ผู้ประกอบการ | & สำหรับการสร้างกระบวนการร่วม

* * * *

ความสามารถในการแยกตัวอักษรแต่ละตัวโดยใช้สตริงค่าเป็นค่าของ FS และเป็นอาร์กิวเมนต์ที่สามในการ แยก ()

* * * *

อาร์กิวเมนต์ที่สองเป็นตัวเลือกสำหรับฟังก์ชัน close ()

* * * *

อาร์กิวเมนต์ที่สามที่เป็นตัวเลือกสำหรับฟังก์ชัน match ()

* * * *

ความสามารถในการใช้ specifiers ตำแหน่งกับ printf และ sprintf ()

* * * *

การใช้ อาร์เรย์ ลบ เพื่อลบเนื้อหาทั้งหมดของอาร์เรย์

* * * *

การใช้ nextfile เพื่อละทิ้งการประมวลผลไฟล์อินพุตปัจจุบัน

* * * *

และ () , asort () , bindtextdomain () , compl () , dcgettext () , gensub () , lshift () , mktime () หรือ () , rshift () , strftime () , strtonum () , systime () และ xor ()

* * * *

สาย Localizable

* * * *

การเพิ่มฟังก์ชันในตัวใหม่แบบไดนามิกด้วยฟังก์ชัน extension ()

หนังสือ AWK ไม่ได้กำหนดค่าที่ส่งคืนของฟังก์ชัน close () Gawk 's close () จะแสดงค่าจาก fclose (3) หรือ pclose (3) เมื่อปิดไฟล์หรือท่อส่งออกตามลำดับ จะส่งกลับสถานะการออกของกระบวนการเมื่อปิดท่อป้อนข้อมูล ค่าที่ส่งกลับคือ -1 ถ้าไฟล์ชื่อท่อหรือกระบวนการร่วมถูกเปิดโดยไม่มีการเปลี่ยนเส้นทาง

เมื่อมีการเรียกใช้ gawk ด้วยตัวเลือก --traditional ถ้าอาร์กิวเมนต์ fs ไปยังตัวเลือก -F คือ `` t '' แล้ว FS จะถูกตั้งค่าเป็นอักขระแท็บ โปรดทราบว่าการพิมพ์ gawk -F \ t ... เพียงแค่ทำให้เชลล์อ้างอิง `` t '' และไม่ผ่าน `` t ไปยังตัวเลือก -F เนื่องจากนี่เป็นกรณีพิเศษที่น่าเกลียด แต่ไม่ใช่พฤติกรรมเริ่มต้น ลักษณะการทำงานนี้ยังไม่เกิดขึ้นถ้ามีการระบุ --posix หากต้องการใช้อักขระแท็บเป็นตัวคั่นฟิลด์ให้ใช้คำพูดเดียว: gawk -F '\ t' ...

ดูคำสั่งอื่น ๆ : wait , lp , complete , execv , getfacl , ioctl , uniq , rmmod , pvcreate , rsh , unix2dos , cal , fs , cd , iwpriv , swapon , autofs , talk , motd , ฟรี , lpr , execl , fdisk , ที่ , ใคร , iwconfig , ifconfig , vgdisplay , เปิด , lsmod , ntohs , mailq , kill , wtmp