ฉันเพิ่งเริ่มเรียนรู้ awk และฉันสับสนเล็กน้อยเกี่ยวกับรุ่นเหล่านั้นทั้งหมด มี "รุ่น" ใดบ้างที่พบในระบบ Unix ที่เหมือนกันทั้งหมดหรือไม่ คุณรู้ไหมไว vi? awk มาตรฐานสนับสนุนตัวเลือก -F หรือไม่
ฉันเพิ่งเริ่มเรียนรู้ awk และฉันสับสนเล็กน้อยเกี่ยวกับรุ่นเหล่านั้นทั้งหมด มี "รุ่น" ใดบ้างที่พบในระบบ Unix ที่เหมือนกันทั้งหมดหรือไม่ คุณรู้ไหมไว vi? awk มาตรฐานสนับสนุนตัวเลือก -F หรือไม่
คำตอบ:
awk - พบมากที่สุดและพบได้ในระบบที่เหมือน Unix ส่วนใหญ่รุ่นที่เก่าที่สุดและด้อยกว่าระบบที่ใหม่กว่า
mawk - การติดตั้ง AWK ที่รวดเร็วซึ่งเป็นรหัสฐานขึ้นอยู่กับล่ามรหัสไบต์
nawk - ในขณะที่ภาษา AWK ได้รับการพัฒนาผู้เขียนออกรุ่นใหม่ (ดังนั้นn - n ew awk) เพื่อหลีกเลี่ยงความสับสน คิดเหมือน Python 3.0 ของ AWK
gawk - ตัวย่อจาก GNU awk รุ่นเดียวที่นักพัฒนาพยายามเพิ่มการสนับสนุน i18n อนุญาตให้ผู้ใช้เขียนไลบรารีที่แบ่งใช้ C ของตนเองเพื่อขยายด้วย "ปลั๊กอิน" ของตนเอง รุ่นนี้เป็นการใช้งานมาตรฐานสำหรับ Linux ต้นฉบับ AWK เขียนขึ้นสำหรับ Unix v7
มีเวอร์ชันอื่น ๆ เช่น jawk (การติดตั้งจาวา), bwk (การนำไปใช้ของ Brian W. Kernighan) เป็นต้น
file /etc/alternatives/awk
จะส่งกลับsymbolic link to /usr/bin/mawk
awk
คุณก็สามารถใช้ มันถูกกำหนดโดย POSIX และดังนั้นจึงต้องมีอยู่ในทุกระบบที่สอดคล้องกับ POSIX
-F
พารามิเตอร์ได้รับคำสั่งจากที่ได้เป็นอย่างดี
gensub()
ทดสอบด้วยawk
-> gawk
และคิดว่าคุณน่าจะไป ...
gawk --posix
เพื่อทำให้การเพ่งพิศทำงานตามมาตรฐาน POSIX นอกจากนี้ยังตรวจสอบสคริปต์ของคุณตามมาตรฐาน คุณสามารถใช้awk --posix '' 2>/dev/null
ใน Ubuntu ได้ไม่ว่าจะใช้gawk, mawk หรือ original-awk เป็น awk แต่ posix-option นั้นเป็นที่รู้จักโดย gawk เท่านั้น --posix ต้องเป็นตัวเลือกสุดท้ายสำหรับ original-awk คุณสามารถใช้awk -W posix ''
กับเพ่งพิศและเหยี่ยว
mawk --posix ''
ล้มเหลวถ้าคุณใช้ mawk 1.3.3 แต่ประสบความสำเร็จกับข้อความแสดงข้อผิดพลาดถ้าคุณใช้ mawk 1.3.4
awk
จะใช้งานได้กับระบบ * NIX ทุกตัว แต่ข้อมูลจำเพาะที่แน่นอนของสิ่งที่รองรับจะเปลี่ยนไปเล็กน้อยเนื่องจากเป็นไปได้ทั้งหมดมันจะถูก symlinked กับเวอร์ชันที่แตกต่างคล้ายกับวิธีที่/bin/sh
ลิงก์กับเชลล์เฉพาะบ่อยครั้งbash
หรืออย่างใดอย่างหนึ่ง อนุพันธ์ของมัน (สำหรับเร็กคอร์ดฉันก็รู้ว่ามีเครื่องจักรจำนวนมากที่เชื่อมvi
โยงกับvim
เช่นกัน)
หน้าวิกิพีเดีย AWKคือการอ้างอิงเริ่มต้นที่ดีสำหรับการเริ่มต้นที่จะเข้าใจ AWK สนามแยกตัวเลือก ' ' ได้รับการสนับสนุนในทุกสายพันธุ์ของ AWK - AFAIK -F
/usr/bin/awk
จะเรียกใช้ nawk หรือ gawk หรือ BusyBox awk (คล้ายกับพฤติกรรมในการ gawk)