ฉันจะหาเวอร์ชั่น awk ของฉันได้อย่างไร


12

หากฉันต้องการทราบรุ่นของ awk ฉันจะได้รับสิ่งต่อไปนี้:

$ awk --version
awk: not an option: --version

ตรวจสอบในman awkฉันเห็นว่า awk ของฉันคือ

mawk - การสแกนรูปแบบและภาษาการประมวลผลข้อความ


- รุ่นเป็นสิ่งที่ GNU คิดค้นขึ้นสำหรับคำสั่งของตัวเองมันไม่ได้เป็นส่วนหนึ่งของ POSIX และคำสั่งส่วนใหญ่ไม่สนับสนุน - รุ่น อย่างไรก็ตาม GNU awk ทำและ awk - รุ่นที่ทำสิ่งที่สมเหตุสมผลในระบบของฉัน การกระจายของ fedorqui ใช้อย่างอื่นที่ไม่ใช่ GNU awk โดยค่าเริ่มต้น
wingedsubmariner

@wingedsubmariner นั่นเป็นข้อมูลที่น่าสนใจที่คุณให้ ขอบคุณ! awk ของฉันคือmawkจึง inexistence versionของ
fedorqui

คำตอบ:


14

ในกรณีนี้man awkแสดงให้เราเห็น:

รุ่น -W

mawk เขียนรุ่นและลิขสิทธิ์เพื่อ stdout และรวบรวมข้อ จำกัด ในการ stderr และออกจาก 0

ในกรณีของฉัน

$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan

compiled limits:
max NF             32767
sprintf buffer      2040

3

ฉันพยายามที่จะเป็นคนทั่วไปมากขึ้น

awk -Wversion 2>/dev/null || awk --version

ทำงานได้ไม่ว่า awk จะเรียกใช้ mawk, gawk หรือ original-awk สำหรับ Debian / Ubuntu Linux ทราบว่า-Wและversionจะต้องมีการตัดแบ่งเพื่อให้ต้นฉบับ awk ไม่คิดว่าversionเป็นโปรแกรม ใน Ubuntu Linux คุณสามารถใช้sudo update-alternatives --config awkเพื่อดูและเลือกการใช้งานที่ถูกเรียกใช้โดยคำสั่ง awk


ฉันไม่ทราบว่ามาตรฐานจะยอมรับตัวเลือกที่ต่อกัน แต่ไม่จำเป็นต้องใช้มันในประสบการณ์ของฉัน: awk -W version </dev/null 2>/dev/null|awk '{print $0;nz=1}END{if(!nz)exit 1}' || awk --versionหรืออีกวิธีหนึ่ง(s=$(awk -W version </dev/null 2>/dev/null); if [ -n "$s" ]; then printf "$s\n"; else awk --version; fi)
jarno
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.