Trueสำหรับ awk เป็นทั้งสตริงที่ไม่ว่างเปล่าหรือตัวเลขที่ไม่ใช่ศูนย์ (ด้วยตัวเลขที่เป็นเลขจำนวนเต็มฐานสิบหรือทศนิยมและมีการใช้งาน awk บางส่วนเป็นเลขฐานสิบหกหรือฐานแปดได้เช่นกัน) สิ่งที่อยู่ในเครื่องหมายคำพูดคู่คือสตริงตัวเลขตัวอักษรที่ไม่ได้ยกมาเป็นตัวเลข แต่สำหรับสิ่งอื่นมีกฎที่ซับซ้อนในการพิจารณาว่ามีบางสิ่งที่จะถือว่าเป็นสตริงหรือตัวเลข ลิขสิทธิ์ GNU awkคู่มือมีทั้งบทที่
จริง:
awk '1' (หมายเลขที่ไม่ใช่ศูนย์)
awk '1e8' (หมายเลขที่ไม่ใช่ศูนย์)
awk '-0.01' (หมายเลขที่ไม่ใช่ศูนย์)
awk '"foo"' (สตริงที่ไม่ว่างเปล่า)
awk '"0"' (สตริงที่ไม่ว่างเปล่า)
awk '0 ""' (การต่อข้อมูลทำให้สตริงที่นี่ไม่ว่าง)
echo 0 | awk '$1 ""' (เหมือนกันกับฟิลด์ $ n)
awk 'substr("000", 1, 1)'(ผลลัพธ์ของsubstr()เป็นสตริงเสมอ)
echo '0foo' | awk '$0' ($ 0 เป็นสตริงที่ไม่ใช่ตัวเลขดังนั้นถือเป็นสตริง (ไม่ว่าง))
เท็จ:
awk '0' (0 หมายเลข)
awk '""' (สตริงว่าง)
echo 0000e123 | awk '$1' ($ 1 ถือว่าเป็นตัวเลขหากเป็นสตริงตัวเลขซึ่งอยู่ที่นี่และเป็น 0)
echo ' 0 ' | awk '$0' (ช่องว่างนำหน้าและต่อท้ายจะถูกละเว้นเพื่อพิจารณาว่าสตริงเป็นตัวเลขหรือไม่)
awk '" 2foo" - 2' (สตริงที่เกี่ยวข้องในนิพจน์เลขคณิตจะถูกแปลงเป็นตัวเลขโดยไม่สนใจตัวเลข)
awk 'unset_or_empty_variable' (สตริงว่าง)
awk '"non-numerical-string" + 0'
YMMV:
awk '1e-500' (บางคนจะบ่นบางคนจะถือว่าเป็น 0)
awk '"0x1" + 0'(ไม่ทั้งหมดการใช้งาน awk สนับสนุน hexadecimals ในผู้ที่"0x1"จะถูกแปลงเป็น1ในคนอื่น ๆ ไป0. รุ่นที่บางส่วนของสเป POSIX การใช้งานที่จำเป็นโดยไม่ได้ตั้งใจที่จะสนับสนุนจำนวนฐานสิบหกว่ามีและมันก็ถูกยกเลิกในภายหลัง. ยังgawkไม่รับรู้จำนวนฐานสิบหกที่ว่าเมื่อPOSIXLY_CORRECTอยู่ใน สิ่งแวดล้อม)
awk '010 - 8' (เหมือนกัน (ไม่มากเหมือนกับที่ 010 เป็นตัวอักษรตรงข้ามกับการแปลงจากสตริง) สำหรับ octals
awk '0x1 - 1'(ในawkการใช้งานที่ไม่รองรับเลขฐานสิบหก0x1คือการต่อข้อมูล0และx1ตัวแปรที่ให้ผลการ"0"แปลงเป็นตัวเลข (0) หากคุณลบ1คุณจะได้รับ-1ซึ่งไม่ใช่จำนวนศูนย์)
หมายความว่าถ้าคุณต้องการตรวจสอบว่าสตริงไม่ว่างคุณไม่ควรทำ:
awk '$ 1 {พิมพ์ $ 1, "ไม่ว่างเปล่า"}'
แต่
awk '$1 != "" {print $1, "is not empty"}'
มิฉะนั้นจะไม่พูด0หรือ-0000E+00001234ไม่ว่างเปล่า
any_integerฉันคิดว่าคุณหมายถึงตัวเลขตามตัวอักษรเช่น7, 89ฯลฯ หากเป็นเช่นนั้นเหตุผลก็คือจำนวนใด ๆ ที่ไม่ใช่เงื่อนไข0หมายถึงtrue