ນີ້ແມ່ນ gawk ຄໍາສັ່ງທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍສະຖານີເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
gawk - ການສະແກນຮູບແບບແລະການປຸງແຕ່ງພາສາ
ສະຫຼຸບສັງລວມ
ແກວ [ຕົວເລືອກຮູບແບບ POSIX ຫຼື GNU] -f program-file [ -- ] ໄຟລ໌ ...
ແກວ [ ທາງເລືອກຮູບແບບ POSIX ຫຼື GNU ] [ -- ] program-text ໄຟລ໌ ...
ລາຍລະອຽດ
ແກວ ແມ່ນການຈັດຕັ້ງປະຕິບັດໂຄງການ GNU ຂອງພາສາການຂຽນໂປລແກລມ AWK. ມັນສອດຄ່ອງກັບ
ຄໍານິຍາມຂອງພາສາໃນມາດຕະຖານ POSIX 1003.1. ສະບັບນີ້ແມ່ນ
ອີງໃສ່ຄໍາອະທິບາຍໃນ ໄດ້ AWK ດໍາເນີນໂຄງການ ພາສາ, ໂດຍ Aho, Kernighan, ແລະ
Weinberger. ແກວ ສະຫນອງຄຸນນະສົມບັດເພີ່ມເຕີມທີ່ພົບເຫັນຢູ່ໃນສະບັບປະຈຸບັນຂອງ Brian
Kernighan ຂອງ ງຸ່ມ ແລະສ່ວນຂະຫຍາຍສະເພາະ GNU ຈຳນວນໜຶ່ງ.
ເສັ້ນຄໍາສັ່ງປະກອບດ້ວຍທາງເລືອກທີ່ຈະ ແກວ ຕົວຂອງມັນເອງ, ຂໍ້ຄວາມໂຄງການ AWK (ຖ້າບໍ່ໄດ້ສະຫນອງ
ຜ່ານ -f or --file ທາງເລືອກ), ແລະຄ່າທີ່ຈະມີຢູ່ໃນ ARGC ແລະ ARGV ກ່ອນ
ກໍານົດຕົວແປ AWK.
ເມື່ອໃດ ແກວ ແມ່ນ invoked ກັບ --ໂປຣໄຟລ໌ ທາງເລືອກ, ມັນຈະເລີ່ມເກັບກໍາສະຖິຕິ profileing
ຈາກການປະຕິບັດຂອງໂຄງການ. ແກວ ແລ່ນຊ້າກວ່າຢູ່ໃນໂໝດນີ້, ແລະອັດຕະໂນມັດ
ຜະລິດໂປຣໄຟລ໌ການປະຕິບັດໃນໄຟລ໌ awkprof.out ເມື່ອເຮັດແລ້ວ. ເບິ່ງ --ໂປຣໄຟລ໌
ທາງເລືອກ, ຂ້າງລຸ່ມນີ້.
ແກວ ຍັງມີ debugger ປະສົມປະສານ. ເຊດຊັນການແກ້ບັນຫາແບບໂຕ້ຕອບສາມາດເລີ່ມຕົ້ນໄດ້ໂດຍ
ການສະຫນອງ --debug ທາງເລືອກໃນແຖວຄໍາສັ່ງ. ໃນຮູບແບບການປະຕິບັດນີ້, ແກວ ພາລະ
ລະຫັດແຫຼ່ງ AWK ແລະຫຼັງຈາກນັ້ນເຕືອນສໍາລັບຄໍາສັ່ງ debugging. ແກວ ສາມາດດີບັກ AWK ເທົ່ານັ້ນ
ແຫຼ່ງໂຄງການສະຫນອງໃຫ້ກັບ -f ທາງເລືອກ. debugger ໄດ້ຖືກບັນທຶກໄວ້ໃນ GAWK: ປະສິດທິພາບ
AWK ດໍາເນີນໂຄງການ.
ທາງເລືອກ ຮູບແບບ
ແກວ ຕົວເລືອກອາດຈະເປັນຕົວເລືອກຕົວອັກສອນແບບ POSIX ແບບດັ້ງເດີມ, ຫຼືແບບ GNU ແບບຍາວ
ທາງເລືອກ. ຕົວເລືອກ POSIX ເລີ່ມຕົ້ນດ້ວຍ “-” ດຽວ, ໃນຂະນະທີ່ຕົວເລືອກຍາວເລີ່ມຕົ້ນດ້ວຍ “--”. ຍາວ
ທາງເລືອກແມ່ນໄດ້ສະຫນອງໃຫ້ສໍາລັບທັງສອງຄຸນນະສົມບັດສະເພາະ GNU ແລະສໍາລັບຄຸນນະສົມບັດທີ່ໄດ້ຮັບມອບຫມາຍ POSIX.
ແກວ- ທາງເລືອກສະເພາະແມ່ນໂດຍປົກກະຕິນໍາໃຊ້ໃນຮູບແບບທາງເລືອກຍາວ. ການໂຕ້ຖຽງກັບທາງເລືອກທີ່ຍາວນານ
ອາດຈະເຂົ້າຮ່ວມກັບທາງເລືອກໂດຍ = ເຊັນ, ໂດຍບໍ່ມີການແຊກແຊງ, ຫຼືພວກເຂົາອາດຈະເປັນ
ສະຫນອງໃຫ້ຢູ່ໃນ argument ແຖວຄໍາສັ່ງຕໍ່ໄປ. ທາງເລືອກຍາວອາດຈະຖືກຫຍໍ້, ຕາບໃດທີ່
ຕົວຫຍໍ້ຍັງຄົງເປັນເອກະລັກ.
ນອກຈາກນັ້ນ, ທຸກໆທາງເລືອກຍາວມີທາງເລືອກສັ້ນທີ່ສອດຄ້ອງກັນ, ດັ່ງນັ້ນທາງເລືອກຂອງ
ການທໍາງານອາດຈະຖືກນໍາໃຊ້ຈາກພາຍໃນ #! ສະຄຣິບທີ່ສາມາດປະຕິບັດໄດ້.
OPTIONS
ແກວ ຍອມຮັບທາງເລືອກຕໍ່ໄປນີ້. ທາງເລືອກມາດຕະຖານແມ່ນໄດ້ລະບຸໄວ້ທໍາອິດ, ປະຕິບັດຕາມໂດຍ
ທາງເລືອກ ສຳ ລັບ ແກວ ສ່ວນຂະຫຍາຍ, ລະບຸຕົວໜັງສືໂດຍຕົວເລືອກສັ້ນ.
-f program-file
--file program-file
ອ່ານແຫຼ່ງໂປຼແກຼມ AWK ຈາກໄຟລ໌ program-file, ແທນທີ່ຈະຈາກຄັ້ງທໍາອິດ
ການໂຕ້ຖຽງແຖວຄໍາສັ່ງ. ຫຼາຍ -f (ຫຼື --file) ທາງເລືອກອາດຈະຖືກນໍາໃຊ້.
-F fs
--field-separator fs
ການນໍາໃຊ້ fs ສໍາລັບຕົວແຍກຊ່ອງປ້ອນຂໍ້ມູນ (ຄ່າຂອງ FS ຕົວແປທີ່ກໍານົດໄວ້ລ່ວງຫນ້າ).
-v var=h
--ມອບໝາຍ var=h
ກໍານົດມູນຄ່າ h ກັບຕົວແປ var, ກ່ອນການປະຕິບັດໂຄງການເລີ່ມຕົ້ນ.
ຄ່າຕົວແປດັ່ງກ່າວມີໃຫ້ ເລີ່ມຕົ້ນ ກົດລະບຽບຂອງໂຄງການ AWK.
-b
--characters-as-bytes
ປະຕິບັດການປ້ອນຂໍ້ມູນທັງໝົດເປັນຕົວອັກສອນດຽວໄບຕ໌. ໃນຄໍາສັບຕ່າງໆອື່ນໆ, ບໍ່ຈ່າຍຄ່າໃດໆ
ເອົາ ໃຈ ໃສ່ ກັບ ຂໍ້ ມູນ ທ້ອງ ຖິ່ນ ໃນ ເວ ລາ ທີ່ ພະ ຍາ ຍາມ ທີ່ ຈະ ປຸງ ແຕ່ງ ຊ່ອຍ ແນ່ ເປັນ multibyte
ຕົວລະຄອນ. ໄດ້ --posix ທາງເລືອກ overrides ອັນນີ້.
-c
-- ແບບດັ້ງເດີມ
ແລ່ນເຂົ້າ ເຂົ້າກັນໄດ້ ໂໝດ. ໃນຮູບແບບທີ່ເຂົ້າກັນໄດ້, ແກວ ປະຕິບັດຕົວດຽວກັນກັບ
Brian Kernighan ຂອງ ງຸ່ມ; ບໍ່ມີສ່ວນຂະຫຍາຍສະເພາະ GNU ໃດຖືກຮັບຮູ້. ເບິ່ງ GNU
ການສົນທະນາ, ຂ້າງລຸ່ມນີ້, ສໍາລັບຂໍ້ມູນເພີ່ມເຕີມ.
-C
--ລິຂະສິດ
ພິມສະບັບສັ້ນຂອງຂໍ້ຄວາມຂໍ້ມູນລິຂະສິດ GNU ຕາມມາດຕະຖານ
ຜົນຜະລິດແລະອອກສົບຜົນສໍາເລັດ.
-d[ເອກະສານ]
-- dump-ຕົວແປ[=ເອກະສານ]
ພິມບັນຊີລາຍການຈັດລຽງລໍາດັບຂອງຕົວແປທົ່ວໂລກ, ປະເພດຂອງຕົນແລະຄ່າສຸດທ້າຍເພື່ອ ເອກະສານທີ່ຢູ່ ຖ້າຫາກວ່າ
no ເອກະສານ ແມ່ນສະຫນອງໃຫ້, ແກວ ໃຊ້ໄຟລ໌ທີ່ມີຊື່ awkvars.out ໃນລະບົບປະຈຸບັນ.
ການມີລາຍຊື່ຕົວແປທົ່ວໂລກທັງໝົດແມ່ນເປັນວິທີທີ່ດີທີ່ຈະຊອກຫາຕົວແປ
ຄວາມຜິດພາດໃນໂຄງການຂອງທ່ານ. ເຈົ້າຍັງຈະໃຊ້ຕົວເລືອກນີ້ຖ້າທ່ານມີຂະຫນາດໃຫຍ່
ໂຄງການທີ່ມີຫຼາຍຫນ້າທີ່, ແລະທ່ານຕ້ອງການໃຫ້ແນ່ໃຈວ່າຫນ້າທີ່ຂອງທ່ານບໍ່ໄດ້
ໂດຍບໍ່ໄດ້ຕັ້ງໃຈໃຊ້ຕົວແປທົ່ວໂລກທີ່ເຈົ້າໝາຍເຖິງທ້ອງຖິ່ນ. (ນີ້ແມ່ນ
ໂດຍສະເພາະແມ່ນຜິດພາດງ່າຍທີ່ຈະເຮັດໃຫ້ມີຊື່ຕົວປ່ຽນແປງງ່າຍດາຍເຊັ່ນ i, j, ແລະອື່ນ on.)
-D[ເອກະສານ]
--debug[=ເອກະສານ]
ເປີດໃຊ້ການດີບັກຂອງໂປຣແກຣມ AWK. ໂດຍຄ່າເລີ່ມຕົ້ນ, debugger ອ່ານຄໍາສັ່ງ
ໂຕ້ຕອບຈາກແປ້ນພິມ (ການປ້ອນຂໍ້ມູນມາດຕະຖານ). ທາງເລືອກ ເອກະສານ ການໂຕ້ຖຽງ
ກໍານົດໄຟລ໌ທີ່ມີລາຍຊື່ຄໍາສັ່ງສໍາລັບ debugger ເພື່ອດໍາເນີນການທີ່ບໍ່ແມ່ນ.
ໂຕ້ຕອບ.
-e program-text
--ແຫຼ່ງ program-text
ການນໍາໃຊ້ program-text ເປັນລະຫັດແຫຼ່ງໂຄງການ AWK. ທາງເລືອກນີ້ອະນຸຍາດໃຫ້ງ່າຍ
ການປະສົມປະສານຂອງຫນ້າທີ່ຫ້ອງສະຫມຸດ (ໃຊ້ໂດຍຜ່ານການ -f ແລະ --file ທາງເລືອກ) ກັບແຫຼ່ງ
ລະຫັດໃສ່ໃນແຖວຄໍາສັ່ງ. ມັນມີຈຸດປະສົງຕົ້ນຕໍສໍາລັບ AWK ຂະຫນາດກາງຫາຂະຫນາດໃຫຍ່
ໂປຣແກຣມທີ່ໃຊ້ໃນ Shell scripts.
-E ເອກະສານ
--exec ເອກະສານ
ຄ້າຍຄືກັບ -fຢ່າງໃດກໍຕາມ, ນີ້ແມ່ນທາງເລືອກສຸດທ້າຍທີ່ດໍາເນີນການ. ນີ້ຄວນຈະເປັນ
ໃຊ້ກັບ #! scripts, ໂດຍສະເພາະສໍາລັບຄໍາຮ້ອງສະຫມັກ CGI, ເພື່ອຫຼີກເວັ້ນການຜ່ານ
ທາງເລືອກຫຼືລະຫັດແຫຼ່ງ (!) ໃນແຖວຄໍາສັ່ງຈາກ URL. ທາງເລືອກນີ້ປິດໃຊ້ງານ
ການມອບໝາຍຕົວແປຂອງແຖວຄຳສັ່ງ.
-g
--gen-pot
ສະແກນແລະວິເຄາະໂຄງການ AWK, ແລະສ້າງ GNU .ຫມໍ້ (ແມ່ແບບວັດຖຸແບບພົກພາ)
ໄຟລ໌ຮູບແບບໃນຜົນຜະລິດມາດຕະຖານທີ່ມີການປ້ອນຂໍ້ມູນສໍາລັບສະຕຣິງທີ່ສາມາດແປໄດ້ທັງໝົດຢູ່ໃນ
ໂຄງການ. ໂຄງການຕົວມັນເອງບໍ່ໄດ້ຖືກປະຕິບັດ. ເບິ່ງ GNU ຂໍ້ຄວາມ ການແຜ່ກະຈາຍສໍາລັບການ
ຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບ .ຫມໍ້ ໄຟລ໌.
-h
- ຊ່ວຍ ພິມບົດສະຫຼຸບທີ່ຂ້ອນຂ້າງສັ້ນຂອງທາງເລືອກທີ່ມີຢູ່ໃນຜົນຜະລິດມາດຕະຖານ.
(ຕາມ GNU ລະຫັດ ມາດຕະຖານ, ທາງເລືອກເຫຼົ່ານີ້ເຮັດໃຫ້ເກີດການອອກທັນທີທັນໃດ, ສົບຜົນສໍາເລັດ.)
-i ລວມໄຟລ໌
--ລວມ ລວມໄຟລ໌
ໂຫຼດຫ້ອງສະໝຸດແຫຼ່ງ awk. ນີ້ຊອກຫາຫ້ອງສະຫມຸດໂດຍໃຊ້ AWKPATH
ສະພາບແວດລ້ອມປ່ຽນແປງ. ຖ້າການຄົ້ນຫາເບື້ອງຕົ້ນລົ້ມເຫລວ, ພະຍາຍາມອີກຄັ້ງຫນຶ່ງ
ຫຼັງຈາກການຕໍ່ທ້າຍ . awk ຕໍ່ທ້າຍ. ໄຟລ໌ຈະຖືກໂຫລດພຽງແຕ່ຄັ້ງດຽວ (ເຊັ່ນ:
ຊໍ້າກັນໄດ້ຖືກລົບລ້າງ), ແລະລະຫັດບໍ່ໄດ້ປະກອບເປັນໂຄງການຕົ້ນຕໍ
ແຫຼ່ງ.
-l lib
-- ໂຫຼດ lib
ໂຫຼດຫ້ອງສະໝຸດທີ່ແບ່ງປັນ lib. ນີ້ຊອກຫາຫ້ອງສະຫມຸດໂດຍໃຊ້ AWKLIBPATH
ສະພາບແວດລ້ອມປ່ຽນແປງ. ຖ້າການຄົ້ນຫາເບື້ອງຕົ້ນລົ້ມເຫລວ, ພະຍາຍາມອີກຄັ້ງຫນຶ່ງ
ຫຼັງຈາກການຕໍ່ທ້າຍການຕໍ່ທ້າຍຫ້ອງສະຫມຸດແບ່ງປັນໃນຕອນຕົ້ນສໍາລັບເວທີ. ຫໍສະໝຸດ
ຄາດວ່າຈະມີການຕັ້ງຊື່ປົກກະຕິ dl_load().
-L [ມູນຄ່າ]
--lint[=ມູນຄ່າ]
ໃຫ້ຄຳເຕືອນກ່ຽວກັບການກໍ່ສ້າງທີ່ໜ້າສົງໄສ ຫຼືບໍ່ສາມາດເຄື່ອນທີ່ກັບ AWK ອື່ນໆ
ການຈັດຕັ້ງປະຕິບັດ. ດ້ວຍການໂຕ້ຖຽງທາງເລືອກຂອງ ຄວາມຕາຍ, ການເຕືອນໄພ lint ກາຍເປັນຄວາມຕາຍ
ຄວາມຜິດພາດ. ນີ້ອາດຈະເປັນ drastic, ແຕ່ການນໍາໃຊ້ຂອງມັນແນ່ນອນວ່າຈະຊຸກຍູ້ການພັດທະນາ
ຂອງໂຄງການ AWK ທີ່ສະອາດ. ດ້ວຍການໂຕ້ຖຽງທາງເລືອກຂອງ ທີ່ບໍ່ຖືກຕ້ອງ, ພຽງແຕ່ຄໍາເຕືອນກ່ຽວກັບ
ສິ່ງທີ່ບໍ່ຖືກຕ້ອງຕົວຈິງແມ່ນອອກ. (ອັນນີ້ຍັງບໍ່ໄດ້ຖືກປະຕິບັດຢ່າງເຕັມສ່ວນເທື່ອ.)
-M
--bignum
ບັງຄັບການຄິດໄລ່ຄວາມແມ່ນຍໍາໂດຍຕົນເອງກ່ຽວກັບຕົວເລກ. ຕົວເລືອກນີ້ບໍ່ມີຜົນຖ້າ ແກວ
ບໍ່ໄດ້ຖືກລວບລວມເພື່ອໃຊ້ຫ້ອງສະຫມຸດ GNU MPFR ແລະ MP.
-n
--ຂໍ້ມູນທີ່ບໍ່ແມ່ນເລກທົດສະນິຍົມ
ຮັບຮູ້ຄ່າເລກຖານແປດ ແລະເລກຖານສິບຫົກໃນຂໍ້ມູນການປ້ອນຂໍ້ມູນ. ການນໍາໃຊ້ ນີ້ ທາງເລືອກ ກັບ ທີ່ຍິ່ງໃຫຍ່
ລະມັດລະວັງ!
-N
--use-lc-ຕົວເລກ
ກໍາລັງນີ້ ແກວ ເພື່ອໃຊ້ຕົວອັກສອນຈຸດທົດສະນິຍົມຂອງທ້ອງຖິ່ນໃນເວລາວິເຄາະການປ້ອນຂໍ້ມູນ
ຂໍ້ມູນ. ເຖິງແມ່ນວ່າມາດຕະຖານ POSIX ຮຽກຮ້ອງໃຫ້ມີພຶດຕິກໍານີ້, ແລະ ແກວ ເຮັດແນວນັ້ນເມື່ອ
--posix ມີຜົນບັງຄັບໃຊ້, ຄ່າເລີ່ມຕົ້ນແມ່ນປະຕິບັດຕາມພຶດຕິກໍາແບບດັ້ງເດີມແລະການນໍາໃຊ້ a
ໄລຍະເວລາເປັນຈຸດທົດສະນິຍົມ, ເຖິງແມ່ນວ່າຢູ່ໃນທ້ອງຖິ່ນທີ່ໄລຍະເວລາບໍ່ແມ່ນອັດຕານິຍົມ
ລັກສະນະຈຸດ. ຕົວເລືອກນີ້ລົບລ້າງພຶດຕິກໍາເລີ່ມຕົ້ນ, ໂດຍບໍ່ມີການເຕັມ
ຄວາມເຂັ້ມງວດ draconian ຂອງ --posix ທາງເລືອກ.
-o[ເອກະສານ]
-- ພິມງາມ[=ເອກະສານ]
ຜົນຜະລິດສະບັບພິມ pretty ຂອງໂຄງການທີ່ຈະ ເອກະສານ. ຖ້າບໍ່ ເອກະສານ ແມ່ນສະຫນອງໃຫ້,
ແກວ ໃຊ້ໄຟລ໌ທີ່ມີຊື່ awkprof.out ໃນລະບົບປະຈຸບັນ.
-O
-- optimize
ເປີດໃຊ້ການເພີ່ມປະສິດທິພາບຕາມການເປັນຕົວແທນພາຍໃນຂອງໂຄງການ. ໃນປັດຈຸບັນ,
ນີ້ປະກອບມີການພັບຄົງທີ່ງ່າຍດາຍ, ແລະການລົບລ້າງການໂທຫາງສໍາລັບການ recursive
ໜ້າ ທີ່. ທ ແກວ ຜູ້ຮັກສາຫວັງວ່າຈະເພີ່ມການເພີ່ມປະສິດທິພາບເພີ່ມເຕີມໃນໄລຍະເວລາ.
-p[prof-file]
--ໂປຣໄຟລ໌[=prof-file]
ເລີ່ມຕົ້ນເຊດຊັນການສ້າງໂປຣໄຟລ໌, ແລະສົ່ງຂໍ້ມູນໂປຣໄຟລ໌ໄປຫາ prof-file. ຄ່າເລີ່ມຕົ້ນ
is awkprof.out. ໂປຼໄຟລ໌ປະກອບມີຈໍານວນການປະຕິບັດຂອງແຕ່ລະຄໍາຖະແຫຼງທີ່ຢູ່ໃນ
ໂປຣແກຣມຢູ່ໃນຂອບຊ້າຍ ແລະຟັງຊັນການນັບການໂທສຳລັບແຕ່ລະຟັງຊັນທີ່ຜູ້ໃຊ້ກຳນົດເອງ.
-P
--posix
ອັນນີ້ເປີດ ເຂົ້າກັນໄດ້ ຮູບແບບ, ໂດຍມີຂໍ້ຈໍາກັດເພີ່ມເຕີມດັ່ງຕໍ່ໄປນີ້:
· \x ລໍາດັບການຫລົບຫນີບໍ່ໄດ້ຖືກຮັບຮູ້.
· ພຽງ ແຕ່ ຊ່ອງ ແລະ ແຖບ ເຮັດ ເປັນ ຕົວ ແຍກ ພາກ ສະ ຫນາມ ໃນ ເວ ລາ ທີ່ FS ຖືກຕັ້ງເປັນພື້ນທີ່ດຽວ,
newline ບໍ່.
· ທ່ານບໍ່ສາມາດສືບຕໍ່ສາຍໄດ້ ? ແລະ :.
· ຄຳ ສັບຄ້າຍຄືກັນ ມ່ວນ ສໍາລັບຄໍາສໍາຄັນ ຫນ້າທີ່ ບໍ່ໄດ້ຮັບຮູ້.
· ຜູ້ປະກອບການ ** ແລະ **= ບໍ່ສາມາດໃຊ້ແທນ ^ ແລະ ^=.
-r
-- ໄລຍະຫ່າງໃໝ່
ເຮັດໃຫ້ການນໍາໃຊ້ຂອງ ໄລຍະຫ່າງ expressions ໃນການຈັບຄູ່ການສະແດງອອກປົກກະຕິ (ເບິ່ງ ເປັນປົກກະຕິ
ສຳ ນວນ, ຂ້າງລຸ່ມນີ້). ການສະແດງອອກໄລຍະຫ່າງແມ່ນບໍ່ມີຢູ່ໃນປະເພນີ
ພາສາ AWK. ມາດຕະຖານ POSIX ເພີ່ມພວກມັນ, ເພື່ອເຮັດໃຫ້ ງຸ່ມ ແລະ ຕົວຢ່າງ ສອດຄ່ອງກັບ
ເຊິ່ງກັນແລະກັນ. ພວກມັນຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ, ແຕ່ຕົວເລືອກນີ້ຍັງຄົງໃຊ້ກັບ
-- ແບບດັ້ງເດີມ.
-S
-- sandbox
ແລ່ນ ແກວ ໃນໂຫມດ sandbox, ປິດການໃຊ້ງານ ລະບົບ() function, input redirection ກັບ
ສາຍ, output redirection ກັບ ພິມ ແລະ printf, ແລະການໂຫຼດການຂະຫຍາຍແບບເຄື່ອນໄຫວ.
ການປະຕິບັດຄໍາສັ່ງ (ຜ່ານທໍ່) ຍັງຖືກປິດໃຊ້ງານ. ອັນນີ້ສະກັດກັ້ນຢ່າງມີປະສິດທິຜົນ
script ຈາກການເຂົ້າເຖິງຊັບພະຍາກອນທ້ອງຖິ່ນ (ຍົກເວັ້ນໄຟລ໌ທີ່ລະບຸໄວ້ໃນ
ເສັ້ນຄໍາສັ່ງ).
-t
--lint-ເກົ່າ
ໃຫ້ຄໍາເຕືອນກ່ຽວກັບການກໍ່ສ້າງທີ່ບໍ່ສາມາດເຄື່ອນທີ່ກັບສະບັບຕົ້ນສະບັບຂອງ
UNIX ງຸ່ມ.
-V
- ການປ່ຽນແປງ
ພິມຂໍ້ມູນສະບັບສໍາລັບສໍາເນົາສະເພາະນີ້ ແກວ ກ່ຽວກັບຜົນຜະລິດມາດຕະຖານ.
ນີ້ແມ່ນເປັນປະໂຫຍດຕົ້ນຕໍສໍາລັບການຮູ້ວ່າຖ້າຫາກວ່າສໍາເນົາໃນປະຈຸບັນຂອງ ແກວ ໃນລະບົບຂອງທ່ານແມ່ນຂຶ້ນ
ມາຮອດປະຈຸບັນກ່ຽວກັບສິ່ງໃດກໍ່ຕາມທີ່ມູນນິທິຊອບແວຟຣີກໍາລັງແຈກຢາຍ.
ນີ້ຍັງເປັນປະໂຫຍດໃນເວລາທີ່ລາຍງານຂໍ້ບົກພ່ອງ. (ຕາມ GNU ລະຫັດ ມາດຕະຖານ, ເຫຼົ່ານີ້
ທາງເລືອກເຮັດໃຫ້ເກີດການອອກທັນທີທັນໃດທີ່ສໍາເລັດຜົນ.)
-- ສັນຍານການສິ້ນສຸດຂອງທາງເລືອກ. ນີ້ແມ່ນເປັນປະໂຫຍດທີ່ຈະອະນຸຍາດໃຫ້ມີການໂຕ້ຖຽງເພີ່ມເຕີມຕໍ່ກັບ AWK
ໂຄງການຕົວມັນເອງເພື່ອເລີ່ມຕົ້ນດ້ວຍ "-". ນີ້ສະຫນອງຄວາມສອດຄ່ອງກັບການໂຕ້ຖຽງ
parsing convention ທີ່ໃຊ້ໂດຍໂປຣແກມ POSIX ອື່ນໆສ່ວນໃຫຍ່.
ໃນໂໝດຄວາມເຂົ້າກັນໄດ້, ທາງເລືອກອື່ນໃດຖືກໝາຍວ່າບໍ່ຖືກຕ້ອງ, ແຕ່ເປັນຢ່າງອື່ນ
ບໍ່ສົນໃຈ. ໃນການດໍາເນີນງານປົກກະຕິ, ຕາບໃດທີ່ຂໍ້ຄວາມໂຄງການໄດ້ຖືກສະຫນອງ, ທາງເລືອກທີ່ບໍ່ຮູ້ຈັກ
ຖືກສົ່ງກັບໂຄງການ AWK ໃນ ARGV array ສໍາລັບການປຸງແຕ່ງ. ນີ້ແມ່ນໂດຍສະເພາະ
ເປັນປະໂຫຍດສໍາລັບການແລ່ນໂຄງການ AWK ຜ່ານ “#!” ກົນໄກການແປພາສາທີ່ປະຕິບັດໄດ້.
ສໍາລັບຄວາມເຂົ້າກັນໄດ້ POSIX, the -W ທາງເລືອກອາດຈະຖືກນໍາໃຊ້, ຕິດຕາມດ້ວຍຊື່ຂອງທາງເລືອກຍາວ.
AWK ຕາຕະລາງເຮັດ ການປະຕິບັດ
ໂປຣແກມ AWK ປະກອບດ້ວຍລຳດັບຂອງຄຳສັ່ງແບບແຜນ ແລະຟັງຊັນທາງເລືອກ
ຄໍານິຍາມ.
@ລວມ "ຊື່ເອກະສານ"
@ໂຫຼດ "ຊື່ເອກະສານ"
ຮູບແບບ { ການປະຕິບັດ ບົດລາຍງານ }
ຫນ້າທີ່ ຊື່(ພາລາມິເຕີ ບັນຊີລາຍຊື່) { ບົດລາຍງານ }
ແກວ ທໍາອິດອ່ານແຫຼ່ງໂຄງການຈາກ program-file(s) ຖ້າລະບຸ, ຈາກການໂຕ້ຖຽງ
to --ແຫຼ່ງ, ຫຼືຈາກການໂຕ້ຖຽງທີ່ບໍ່ແມ່ນທາງເລືອກທໍາອິດໃນເສັ້ນຄໍາສັ່ງ. ໄດ້ -f ແລະ
--ແຫຼ່ງ ທາງເລືອກອາດຈະຖືກນໍາໃຊ້ຫຼາຍຄັ້ງໃນແຖວຄໍາສັ່ງ. ແກວ ອ່ານໂຄງການ
ຂໍ້ຄວາມຄືກັບວ່າທັງຫມົດ program-files ແລະຂໍ້ຄວາມແຫຼ່ງສາຍຄໍາສັ່ງໄດ້ຖືກ concatenated
ຮ່ວມກັນ. ນີ້ແມ່ນເປັນປະໂຫຍດສໍາລັບການກໍ່ສ້າງຫ້ອງສະຫມຸດຂອງຟັງຊັນ AWK, ໂດຍບໍ່ຈໍາເປັນຕ້ອງ
ລວມເອົາພວກມັນຢູ່ໃນແຕ່ລະໂຄງການ AWK ໃຫມ່ທີ່ໃຊ້ພວກມັນ. ມັນຍັງສະຫນອງຄວາມສາມາດໃນການປະສົມ
ຟັງຊັນຫ້ອງສະຫມຸດກັບບັນດາໂຄງການເສັ້ນຄໍາສັ່ງ.
ນອກຈາກນັ້ນ, ສາຍເລີ່ມຕົ້ນດ້ວຍ @ລວມ ອາດຈະຖືກນໍາໃຊ້ເພື່ອປະກອບໄຟລ໌ແຫຼ່ງອື່ນໆເຂົ້າໄປໃນ
ໂຄງການຂອງທ່ານ, ເຮັດໃຫ້ການນໍາໃຊ້ຫ້ອງສະຫມຸດງ່າຍຂຶ້ນ. ນີ້ແມ່ນເທົ່າກັບການນໍາໃຊ້ -i ທາງເລືອກ.
ແຖວເລີ່ມຕົ້ນດ້ວຍ @ໂຫຼດ ອາດຈະຖືກນໍາໃຊ້ເພື່ອໂຫລດຫ້ອງສະຫມຸດທີ່ແບ່ງປັນເຂົ້າໄປໃນໂຄງການຂອງທ່ານ. ນີ້
ເທົ່າກັບການນໍາໃຊ້ -l ທາງເລືອກ.
ສະພາບແວດລ້ອມປ່ຽນແປງໄດ້ AWKPATH ກໍານົດເສັ້ນທາງຄົ້ນຫາທີ່ຈະໃຊ້ໃນເວລາຊອກຫາໄຟລ໌ແຫຼ່ງ
ມີຊື່ກັບ -f ແລະ -i ທາງເລືອກ. ຖ້າຕົວແປນີ້ບໍ່ມີ, ເສັ້ນທາງເລີ່ມຕົ້ນແມ່ນ
".:/usr/local/share/awk". (ໄດເລກະທໍລີຕົວຈິງອາດຈະແຕກຕ່າງກັນ, ຂຶ້ນກັບວິທີການ ແກວ ແມ່ນ
ສ້າງແລະຕິດຕັ້ງ.) ຖ້າຊື່ໄຟລ໌ທີ່ຖືກມອບໃຫ້ -f ທາງເລືອກປະກອບມີຕົວອັກສອນ “/”, ບໍ່
ການຊອກຫາເສັ້ນທາງແມ່ນປະຕິບັດ.
ສະພາບແວດລ້ອມປ່ຽນແປງໄດ້ AWKLIBPATH ກໍານົດເສັ້ນທາງຄົ້ນຫາທີ່ຈະໃຊ້ໃນເວລາຊອກຫາແຫຼ່ງ
ໄຟລ໌ທີ່ມີຊື່ດ້ວຍ -l ທາງເລືອກ. ຖ້າຕົວແປນີ້ບໍ່ມີ, ເສັ້ນທາງເລີ່ມຕົ້ນແມ່ນ
"/usr/local/lib/gawk". (ໄດເລກະທໍລີຕົວຈິງອາດຈະແຕກຕ່າງກັນ, ຂຶ້ນກັບວິທີການ ແກວ ໄດ້ຖືກສ້າງຂຶ້ນ
ແລະຕິດຕັ້ງ.)
ແກວ ປະຕິບັດໂຄງການ AWK ໃນຄໍາສັ່ງຕໍ່ໄປນີ້. ກ່ອນອື່ນ ໝົດ, ທຸກໆວຽກທີ່ປ່ຽນແປງໄດ້
ລະບຸໄວ້ໂດຍຜ່ານ -v ທາງເລືອກແມ່ນປະຕິບັດ. ຕໍ່ໄປ, ແກວ ລວບລວມໂຄງການເປັນ
ຮູບແບບພາຍໃນ. ຈາກນັ້ນ, ແກວ ປະຕິບັດລະຫັດໃນ ເລີ່ມຕົ້ນ ກົດລະບຽບ (ຖ້າມີ), ແລະຈາກນັ້ນ
ດໍາເນີນການເພື່ອອ່ານແຕ່ລະໄຟລ໌ທີ່ມີຊື່ຢູ່ໃນ ARGV array (ເຖິງ ARGV[ARGC]). ຖ້າບໍ່ມີ
ໄຟລ໌ທີ່ມີຊື່ຢູ່ໃນເສັ້ນຄໍາສັ່ງ, ແກວ ອ່ານການປ້ອນຂໍ້ມູນມາດຕະຖານ.
ຖ້າຊື່ໄຟລ໌ຢູ່ໃນເສັ້ນຄໍາສັ່ງມີແບບຟອມ var=h ມັນຖືກປະຕິບັດເປັນຕົວແປ
ການມອບໝາຍ. ຕົວແປ var ຈະຖືກມອບຫມາຍມູນຄ່າ h. (ອັນນີ້ເກີດຂຶ້ນຫຼັງຈາກໃດນຶ່ງ
ເລີ່ມຕົ້ນ ກົດລະບຽບໄດ້ຖືກດໍາເນີນການ.) ການມອບຫມາຍຕົວແປເສັ້ນຄໍາສັ່ງແມ່ນເປັນປະໂຫຍດທີ່ສຸດສໍາລັບການ
ການກຳນົດຄ່າແບບໄດນາມິກໃຫ້ກັບຕົວແປທີ່ AWK ໃຊ້ເພື່ອຄວບຄຸມວິທີການປ້ອນຂໍ້ມູນຖືກແຍກອອກ
ທົ່ງນາ ແລະບັນທຶກ. ມັນຍັງເປັນປະໂຫຍດສໍາລັບການຄວບຄຸມລັດຖ້າຫາກວ່າການຜ່ານຫຼາຍແມ່ນຈໍາເປັນ
ຫຼາຍກວ່າໄຟລ໌ຂໍ້ມູນດຽວ.
ຖ້າຫາກວ່າມູນຄ່າຂອງອົງປະກອບສະເພາະໃດຫນຶ່ງຂອງ ARGV ຫວ່າງເປົ່າ (""), ແກວ ຂ້າມມັນ.
ສໍາລັບແຕ່ລະໄຟລ໌ປ້ອນຂໍ້ມູນ, ຖ້າ a BEGINFILE ກົດລະບຽບທີ່ມີຢູ່, ແກວ ປະຕິບັດລະຫັດທີ່ກ່ຽວຂ້ອງກ່ອນ
ການປຸງແຕ່ງເນື້ອໃນຂອງໄຟລ໌. ເຊັ່ນດຽວກັນ, ແກວ ປະຕິບັດລະຫັດທີ່ກ່ຽວຂ້ອງກັບ
ENDFILE ຫຼັງຈາກການປຸງແຕ່ງໄຟລ໌.
ສໍາລັບແຕ່ລະບັນທຶກໃນການປ້ອນຂໍ້ມູນ, ແກວ ການທົດສອບເພື່ອເບິ່ງວ່າມັນກົງກັບອັນໃດ ຮູບແບບ ໃນ AWK
ໂຄງການ. ສໍາລັບແຕ່ລະຮູບແບບທີ່ບັນທຶກກົງກັນ, ແກວ ດໍາເນີນການທີ່ກ່ຽວຂ້ອງ ການປະຕິບັດ.
ຮູບແບບຕ່າງໆໄດ້ຖືກທົດສອບຕາມລໍາດັບທີ່ພວກເຂົາເກີດຂຶ້ນໃນໂຄງການ.
ສຸດທ້າຍ, ຫຼັງຈາກການປ້ອນຂໍ້ມູນທັງໝົດໝົດແລ້ວ, ແກວ ປະຕິບັດລະຫັດໃນ END ກົດລະບຽບ (ຖ້າ
ໃດ).
ຄໍາສັ່ງ ອອນໄລນ໌ ໄດເລກະທໍລີ
ອີງຕາມການ POSIX, ໄຟລ໌ທີ່ມີຊື່ຢູ່ໃນ ງຸ່ມ ແຖວຄໍາສັ່ງຕ້ອງເປັນໄຟລ໌ຂໍ້ຄວາມ. ພຶດຕິກຳ
ແມ່ນ ``ບໍ່ໄດ້ກຳນົດ'' ຖ້າພວກມັນບໍ່ແມ່ນ. ຮຸ່ນສ່ວນໃຫຍ່ຂອງ ງຸ່ມ ປະຕິບັດບັນຊີລາຍການກ່ຽວກັບຄໍາສັ່ງ
ເສັ້ນເປັນຄວາມຜິດພາດທີ່ຮ້າຍແຮງ.
ເລີ່ມຕົ້ນດ້ວຍເວີຊັ່ນ 4.0 ຂອງ ແກວ, ໄດເລກະທໍລີໃນເສັ້ນຄໍາສັ່ງຜະລິດຄໍາເຕືອນ, ແຕ່
ຖ້າບໍ່ດັ່ງນັ້ນຈະຖືກຂ້າມ. ຖ້າຫາກວ່າທັງສອງ --posix or -- ແບບດັ້ງເດີມ ທາງເລືອກແມ່ນໃຫ້, ຫຼັງຈາກນັ້ນ
ແກວ ກັບຄືນໄປສູ່ການປິ່ນປົວໄດເລກະທໍລີໃນເສັ້ນຄໍາສັ່ງເປັນຄວາມຜິດພາດທີ່ຮ້າຍແຮງ.
ຕົວແປ, ບັນທຶກ ແລະ ທົ່ງນາ
ຕົວແປ AWK ແມ່ນແບບເຄື່ອນໄຫວ; ພວກເຂົາເຈົ້າມີຢູ່ໃນເມື່ອພວກເຂົາເຈົ້າໄດ້ຖືກນໍາໃຊ້ຄັ້ງທໍາອິດ. ຂອງພວກເຂົາ
ຄ່າແມ່ນຕົວເລກຈຸດລອຍ ຫຼືສະຕຣິງ, ຫຼືທັງສອງ, ຂຶ້ນກັບວ່າພວກມັນເປັນແນວໃດ
ໃຊ້. AWK ຍັງມີອາເຣມິຕິຫນຶ່ງ; arrays ມີຫຼາຍຂະຫນາດອາດຈະເປັນ
ຈຳລອງ. ແກວ ສະຫນອງ array ທີ່ແທ້ຈິງຂອງ array; ເບິ່ງ ອາເລ, ຂ້າງລຸ່ມນີ້. ກຳນົດໄວ້ລ່ວງໜ້າຫຼາຍອັນ
ຕົວແປແມ່ນກໍານົດເປັນໂຄງການແລ່ນ; ເຫຼົ່ານີ້ແມ່ນໄດ້ອະທິບາຍຕາມຄວາມຈໍາເປັນແລະສະຫຼຸບຂ້າງລຸ່ມນີ້.
ການບັນທຶກ
ໂດຍປົກກະຕິ, ບັນທຶກຖືກແຍກອອກດ້ວຍຕົວອັກສອນແຖວໃໝ່. ທ່ານສາມາດຄວບຄຸມວິທີການບັນທຶກ
ແຍກໂດຍການກຳນົດຄ່າໃຫ້ກັບຕົວແປທີ່ສ້າງຂຶ້ນໃນຕົວ RSທີ່ຢູ່ ຖ້າຫາກວ່າ RS ແມ່ນຕົວອັກສອນໃດຫນຶ່ງ,
ລັກສະນະນັ້ນແຍກບັນທຶກ. ຖ້າບໍ່ດັ່ງນັ້ນ, RS ເປັນການສະແດງອອກເປັນປົກກະຕິ. ຂໍ້ຄວາມຢູ່ໃນ
ການປ້ອນຂໍ້ມູນທີ່ກົງກັບການສະແດງຜົນປົກກະຕິນີ້ຈະແຍກບັນທຶກ. ຢ່າງໃດກໍຕາມ, ໃນ
ຮູບແບບຄວາມເຂົ້າກັນໄດ້, ພຽງແຕ່ຕົວອັກສອນທໍາອິດຂອງມູນຄ່າສະຕຣິງຂອງມັນຖືກນໍາໃຊ້ສໍາລັບການແຍກ
ບັນທຶກ. ຖ້າ RS ຖືກຕັ້ງເປັນສະຕຣິງ null, ຫຼັງຈາກນັ້ນບັນທຶກຈະຖືກແຍກອອກໂດຍເສັ້ນເປົ່າ.
ເມື່ອໃດ RS ຖືກຕັ້ງເປັນສະຕຣິງ null, ຕົວອັກສອນແຖວໃໝ່ເຮັດໜ້າທີ່ເປັນຕົວແຍກຊ່ອງຂໍ້ມູນສະເໝີ,
ນອກເໜືອໄປຈາກມູນຄ່າອັນໃດກໍໄດ້ FS ອາດຈະມີ.
Fields
ເມື່ອບັນທຶກການປ້ອນຂໍ້ມູນແຕ່ລະອັນຖືກອ່ານ, ແກວ ແບ່ງບັນທຶກເປັນ ທົ່ງນາ, ການນໍາໃຊ້ມູນຄ່າຂອງ
FS ຕົວແປເປັນຕົວແຍກພາກສະຫນາມ. ຖ້າ FS ເປັນຕົວອັກສອນດຽວ, ຊ່ອງຂໍ້ມູນຖືກແຍກອອກໂດຍ
ລັກສະນະນັ້ນ. ຖ້າ FS ແມ່ນສະຕຣິງ null, ຈາກນັ້ນແຕ່ລະຕົວລະຄອນຈະກາຍເປັນ a
ພາກສະຫນາມແຍກຕ່າງຫາກ. ຖ້າບໍ່ດັ່ງນັ້ນ, FS ຄາດວ່າຈະເປັນການສະແດງອອກປົກກະຕິຢ່າງເຕັມທີ່. ໃນ
ກໍລະນີພິເສດນັ້ນ FS ແມ່ນຊ່ອງຫວ່າງດຽວ, ຊ່ອງຂໍ້ມູນຖືກແຍກອອກໂດຍການແລ່ນຊ່ອງຫວ່າງ ແລະ/ຫຼືແຖບ
ແລະ/ຫຼື ສາຍໃໝ່. (ແຕ່ເບິ່ງພາກ POSIX ຄວາມເຂົ້າກັນໄດ້, ດ້ານລຸ່ມ). ຫມາຍເຫດ: ມູນຄ່າຂອງ
ບໍ່ສົນໃຈ (ເບິ່ງຂ້າງລຸ່ມນີ້) ຍັງມີຜົນກະທົບແນວໃດຊ່ອງຂໍ້ມູນຖືກແບ່ງອອກເມື່ອໃດ FS ເປັນການສະແດງອອກປົກກະຕິ,
ແລະວິທີການບັນທຶກຖືກແຍກອອກເມື່ອໃດ RS ເປັນການສະແດງອອກເປັນປົກກະຕິ.
ຖ້າ ທົ່ງນາ ຕົວແປແມ່ນຕັ້ງເປັນຊ່ອງແຍກລາຍຊື່ຕົວເລກ, ແຕ່ລະຊ່ອງຂໍ້ມູນແມ່ນ
ຄາດວ່າຈະມີຄວາມກວ້າງຄົງທີ່, ແລະ ແກວ ແຍກບັນທຶກໂດຍໃຊ້ຄວາມກວ້າງທີ່ລະບຸ.
ມູນຄ່າຂອງ FS ຖືກລະເລີຍ. ການກໍານົດຄ່າໃຫມ່ໃຫ້ FS or ຟຟລ overrides ການນໍາໃຊ້ຂອງ
ທົ່ງນາ.
ເຊັ່ນດຽວກັນ, ຖ້າຫາກວ່າ ຟຟລ ຕົວແປແມ່ນຕັ້ງເປັນສະຕຣິງທີ່ເປັນຕົວແທນຂອງການສະແດງຜົນປົກກະຕິ, ແຕ່ລະອັນ
ຊ່ອງຂໍ້ມູນແມ່ນປະກອບດ້ວຍຂໍ້ຄວາມທີ່ກົງກັບການສະແດງຜົນປົກກະຕິນັ້ນ. ໃນກໍລະນີດັ່ງກ່າວນີ້, ປົກກະຕິ
expression ອະທິບາຍທົ່ງນາດ້ວຍຕົນເອງ, ແທນທີ່ຈະເປັນຂໍ້ຄວາມທີ່ແຍກທົ່ງນາ.
ການກໍານົດຄ່າໃຫມ່ໃຫ້ FS or ທົ່ງນາ overrides ການນໍາໃຊ້ຂອງ ຟຟລ.
ແຕ່ລະຊ່ອງຂໍ້ມູນໃນບັນທຶກການປ້ອນຂໍ້ມູນອາດຈະຖືກອ້າງອີງໂດຍຕຳແໜ່ງຂອງມັນ: $1, $2, ແລະອື່ນໆ. $0
ແມ່ນການບັນທຶກທັງຫມົດ. ຊ່ອງຂໍ້ມູນບໍ່ຈໍາເປັນຕ້ອງອ້າງອີງໂດຍຄ່າຄົງທີ່:
n = 5
ພິມ $n
ພິມພາກສະຫນາມທີຫ້າໃນບັນທຶກການປ້ອນຂໍ້ມູນ.
ຕົວແປ NF ຖືກຕັ້ງເປັນຈໍານວນຊ່ອງຂໍ້ມູນທັງໝົດໃນບັນທຶກການປ້ອນຂໍ້ມູນ.
ການອ້າງອີງໃສ່ຊ່ອງຂໍ້ມູນທີ່ບໍ່ມີຢູ່ແລ້ວ (ເຊັ່ນ: ຊ່ອງຂໍ້ມູນຫຼັງຈາກ $NF) ຜະລິດ null-string.
ຢ່າງໃດກໍ່ຕາມ, ການມອບຫມາຍໃຫ້ພາກສະຫນາມທີ່ບໍ່ມີຢູ່ (ຕົວຢ່າງ: $(NF+2) = 5) ເພີ່ມມູນຄ່າຂອງ NF,
ສ້າງຊ່ອງຂໍ້ມູນແຊກແຊງໃດໆທີ່ມີສະຕຣິງ null ເປັນຄ່າຂອງພວກມັນ, ແລະເຮັດໃຫ້ເກີດຄ່າ
of $0 ຈະຖືກຄິດໄລ່ຄືນ, ໂດຍມີຊ່ອງຂໍ້ມູນຖືກແຍກອອກດ້ວຍຄ່າຂອງ FSO. ເອກະສານອ້າງອີງ
ຊ່ອງຂໍ້ມູນເລກລົບເຮັດໃຫ້ເກີດຄວາມຜິດພາດຮ້າຍແຮງ. ຫຼຸດລົງ NF ເຮັດໃຫ້ເກີດຄຸນຄ່າຂອງ
ຊ່ອງຂໍ້ມູນຜ່ານມາຄ່າໃຫມ່ທີ່ຈະສູນເສຍ, ແລະມູນຄ່າຂອງ $0 ທີ່ຈະໄດ້ຮັບການ recomputed, ມີ
ຊ່ອງຂໍ້ມູນຖືກແຍກອອກດ້ວຍຄ່າຂອງ FSO.
ການກໍານົດຄ່າໃຫ້ກັບຊ່ອງຂໍ້ມູນທີ່ມີຢູ່ແລ້ວເຮັດໃຫ້ບັນທຶກທັງຫມົດຖືກສ້າງໃຫມ່ເມື່ອໃດ $0 is
ອ້າງອີງ. ເຊັ່ນດຽວກັນ, ກໍານົດຄ່າໃຫ້ $0 ເຮັດໃຫ້ການບັນທຶກການ resplit, ການສ້າງ
ຄ່າໃຫມ່ສໍາລັບຊ່ອງຂໍ້ມູນ.
Built-in Variables
ແກວຕົວແປໃນຕົວຂອງແມ່ນ:
ARGC ຈໍານວນຂອງການໂຕ້ຖຽງແຖວຄໍາສັ່ງ (ບໍ່ລວມເອົາທາງເລືອກທີ່ຈະ ແກວ, ຫຼື
ແຫຼ່ງໂຄງການ).
ARGIND ດັດຊະນີໃນ ARGV ຂອງໄຟລ໌ປະຈຸບັນກໍາລັງດໍາເນີນການ.
ARGV Array ຂອງ arguments ແຖວຄໍາສັ່ງ. array ຖືກດັດສະນີຈາກ 0 ຫາ ARGC -1
ການປ່ຽນແປງເນື້ອໃນຂອງ ARGV ສາມາດຄວບຄຸມໄຟລ໌ທີ່ໃຊ້ສໍາລັບຂໍ້ມູນ.
BINMODE ໃນລະບົບທີ່ບໍ່ແມ່ນ POSIX, ລະບຸການໃຊ້ໂຫມດ “binary” ສໍາລັບໄຟລ໌ I/O ທັງໝົດ.
ຄ່າຕົວເລກຂອງ 1, 2, ຫຼື 3, ລະບຸວ່າໄຟລ໌ປ້ອນຂໍ້ມູນ, ໄຟລ໌ຜົນຜະລິດ, ຫຼືທັງໝົດ.
ໄຟລ໌, ຕາມລໍາດັບ, ຄວນໃຊ້ binary I/O. ຄ່າສະຕຣິງຂອງ "r", ຫຼື "ວ"
ລະບຸວ່າໄຟລ໌ປ້ອນຂໍ້ມູນ, ຫຼືໄຟລ໌ຜົນຜະລິດ, ຕາມລໍາດັບ, ຄວນໃຊ້ຖານສອງ
I/O. ຄ່າສະຕຣິງຂອງ "rw" or "wr" ລະບຸວ່າໄຟລ໌ທັງໝົດຄວນໃຊ້ binary
I/O. ຄ່າສະຕຣິງອື່ນໃດຖືກປະຕິບັດເປັນ "rw", ແຕ່ສ້າງຄໍາເຕືອນ
ຂໍ້ຄວາມ.
CONVFMT ຮູບແບບການແປງຕົວເລກ, "%.6g", ໂດຍຄ່າເລີ່ມຕົ້ນ.
ສະພາບແວດລ້ອມ array ທີ່ມີຄ່າຂອງສະພາບແວດລ້ອມປະຈຸບັນ. array ແມ່ນ
ຖືກດັດສະນີໂດຍຕົວແປສະພາບແວດລ້ອມ, ແຕ່ລະອົງປະກອບເປັນມູນຄ່າຂອງສິ່ງນັ້ນ
ຕົວແປ (ຕົວຢ່າງ, ສະພາບແວດລ້ອມ["ເຮືອນ"] ອາດຈະ "/home/arnold"). ການປ່ຽນແປງ array ນີ້
ບໍ່ມີຜົນກະທົບຕໍ່ສະພາບແວດລ້ອມທີ່ເຫັນໂດຍໂຄງການທີ່ ແກວ spawns ຜ່ານ
redirection ຫຼື ລະບົບ() function
ERRNO ຖ້າຫາກວ່າຄວາມຜິດພາດລະບົບເກີດຂຶ້ນທັງການເຮັດການປ່ຽນເສັ້ນທາງສໍາລັບການ ສາຍ, ໃນລະຫວ່າງການອ່ານ
ສໍາລັບການ ສາຍ, ຫຼືໃນໄລຍະ a ປິດ (), ຫຼັງຈາກນັ້ນ ERRNO ຈະມີສະຕຣິງທີ່ອະທິບາຍ
ຄວາມຜິດພາດ. ຄ່າແມ່ນຂຶ້ນກັບການແປຢູ່ໃນທ້ອງຖິ່ນທີ່ບໍ່ແມ່ນພາສາອັງກິດ.
ທົ່ງນາ ຊ່ອງຫວ່າງທີ່ແຍກລາຍການຄວາມກວ້າງຂອງຊ່ອງຂໍ້ມູນ. ເມື່ອຕັ້ງ, ແກວ ວິເຄາະການປ້ອນຂໍ້ມູນ
ເຂົ້າໄປໃນທົ່ງນາຂອງຄວາມກວ້າງຄົງທີ່, ແທນທີ່ຈະໃຊ້ມູນຄ່າຂອງ FS ຕົວແປເປັນ
ຕົວແຍກພາກສະຫນາມ. ເບິ່ງ Fields, ຂ້າງເທິງ.
ຊື່ເອກະສານ ຊື່ຂອງໄຟລ໌ປ້ອນຂໍ້ມູນປະຈຸບັນ. ຖ້າບໍ່ມີໄຟລ໌ຖືກລະບຸໄວ້ໃນຄໍາສັ່ງ
ເສັ້ນ, ມູນຄ່າຂອງ ຊື່ເອກະສານ ແມ່ນ “-”. ແນວໃດກໍ່ຕາມ, ຊື່ເອກະສານ ແມ່ນບໍ່ໄດ້ກໍານົດພາຍໃນ
ເລີ່ມຕົ້ນ ກົດລະບຽບ (ເວັ້ນເສຍແຕ່ກໍານົດໂດຍ ສາຍ).
FNR ໝາຍເລກບັນທຶກການປ້ອນຂໍ້ມູນໃນໄຟລ໌ປ້ອນຂໍ້ມູນປັດຈຸບັນ.
ຟຟລ ການສະແດງອອກປົກກະຕິທີ່ອະທິບາຍເນື້ອໃນຂອງທົ່ງນາໃນບັນທຶກ. ເມື່ອໃດ
ຕັ້ງ, ແກວ parses ການປ້ອນຂໍ້ມູນເຂົ້າໄປໃນຊ່ອງຂໍ້ມູນ, ບ່ອນທີ່ຊ່ອງຂໍ້ມູນກົງກັບປົກກະຕິ
ການສະແດງອອກ, ແທນທີ່ຈະໃຊ້ມູນຄ່າຂອງ FS ຕົວແປເປັນພາກສະຫນາມ
ຕົວແຍກ. ເບິ່ງ Fields, ຂ້າງເທິງ.
FS ຕົວແຍກຊ່ອງປ້ອນຂໍ້ມູນ, ຊ່ອງຫວ່າງຕາມຄ່າເລີ່ມຕົ້ນ. ເບິ່ງ Fields, ຂ້າງເທິງ.
FUNCTAB array ທີ່ມີດັດຊະນີແລະຄ່າທີ່ສອດຄ້ອງກັນແມ່ນຊື່ຂອງຜູ້ໃຊ້ທັງຫມົດ -
ຫນ້າທີ່ກໍານົດຫຼືການຂະຫຍາຍຢູ່ໃນໂຄງການ. ຫມາຍເຫດ: ທ່ານອາດຈະບໍ່ໃຊ້
ລຶບ ຖະແຫຼງການກັບ FUNCTAB ຂບວນ.
ບໍ່ສົນໃຈ ຄວບຄຸມຄວາມອ່ອນໄຫວຂອງຕົວພິມນ້ອຍໃຫຍ່ຂອງການປະຕິບັດການສະແດງອອກ ແລະສະຕຣິງປົກກະຕິທັງໝົດ.
If ບໍ່ສົນໃຈ ມີມູນຄ່າທີ່ບໍ່ແມ່ນສູນ, ຫຼັງຈາກນັ້ນການປຽບທຽບສະຕຣິງ ແລະຮູບແບບ
ການຈັບຄູ່ໃນກົດລະບຽບ, ການແຍກພາກສະຫນາມກັບ FS ແລະ ຟຟລ, ບັນທຶກການແຍກກັບ
RS, ການສະແດງອອກປົກກະຕິທີ່ກົງກັບ ~ ແລະ !~, ແລະ gensub(), gsub(),
ດັດຊະນີ (), ການແຂ່ງຂັນ(), patsplit(), ແບ່ງປັນ (), ແລະ ຍ່ອຍ() ຟັງຊັນໃນຕົວທັງໝົດບໍ່ສົນໃຈ
ກໍລະນີໃນເວລາທີ່ດໍາເນີນການສະແດງອອກເປັນປົກກະຕິ. ຫມາຍເຫດ: ການສະໝັກໃຊ້ອາເຣແມ່ນ
ບໍ່ ໄດ້ຮັບຜົນກະທົບ. ຢ່າງໃດກໍຕາມ, ໄດ້ ຊະນິດ() ແລະ assorti() ຫນ້າທີ່ໄດ້ຮັບຜົນກະທົບ.
ດັ່ງນັ້ນ, ຖ້າ ບໍ່ສົນໃຈ ບໍ່ເທົ່າກັບສູນ, /aB/ ກົງກັບສະຕຣິງທັງໝົດ
"ab", "aB", "ອັບ", ແລະ "AB". ເຊັ່ນດຽວກັນກັບຕົວແປ AWK ທັງຫມົດ, ມູນຄ່າເບື້ອງຕົ້ນຂອງ
ບໍ່ສົນໃຈ ແມ່ນສູນ, ສະນັ້ນການສະແດງອອກ ແລະ string ປົກກະຕິທັງໝົດແມ່ນ
ໂດຍປົກກະຕິແມ່ນຕົວພິມນ້ອຍໃຫຍ່.
ເສັ້ນ ສະຫນອງການຄວບຄຸມແບບເຄື່ອນໄຫວຂອງ --lint ທາງເລືອກຈາກພາຍໃນໂຄງການ AWK.
ເມື່ອເປັນຄວາມຈິງ, ແກວ ພິມຄໍາເຕືອນຂອງ lint. ໃນເວລາທີ່ບໍ່ຖືກຕ້ອງ, ມັນບໍ່ໄດ້. ເມື່ອຖືກມອບໝາຍ
ຄ່າສະຕຣິງ "ຕາຍ", ການເຕືອນໄພ lint ກາຍເປັນຄວາມຜິດພາດທີ່ຮ້າຍແຮງ, ຄືກັນກັບ
--lint=ຕາຍ. ຄ່າທີ່ແທ້ຈິງອື່ນໆພຽງແຕ່ພິມຄໍາເຕືອນ.
NF ຈຳນວນຊ່ອງຂໍ້ມູນໃນບັນທຶກການປ້ອນຂໍ້ມູນປັດຈຸບັນ.
NR ຈໍານວນການບັນທຶກການປ້ອນຂໍ້ມູນທັງໝົດທີ່ເຫັນມາເຖິງຕອນນັ້ນ.
OFMT ຮູບແບບຜົນຜະລິດສໍາລັບຕົວເລກ, "%.6g", ໂດຍຄ່າເລີ່ມຕົ້ນ.
FSO ຕົວແຍກຊ່ອງຂໍ້ມູນຜົນຜະລິດ, ຊ່ອງຫວ່າງຕາມຄ່າເລີ່ມຕົ້ນ.
ORS ຕົວແຍກບັນທຶກຜົນຜະລິດ, ຕາມຄ່າເລີ່ມຕົ້ນເປັນແຖວໃໝ່.
PREC ຄວາມແມ່ນຍໍາໃນການເຮັດວຽກຂອງຕົວເລກຈຸດທີ່ເລື່ອນໄດ້ຕາມໃຈມັກ, 53 ໂດຍ
Default
PROCINFO ອົງປະກອບຂອງອາເຣນີ້ໃຫ້ການເຂົ້າເຖິງຂໍ້ມູນກ່ຽວກັບ AWK ແລ່ນ
ໂຄງການ. ໃນບາງລະບົບ, ອາດຈະມີອົງປະກອບໃນ array, "ກຸ່ມ 1"
ໂດຍຜ່ານການ "ກຸ່ມn" ສໍາລັບບາງຄົນ n, ຊຶ່ງເປັນຈໍານວນຂອງກຸ່ມເສີມທີ່
ຂະບວນການມີ. ໃຊ້ in ຜູ້ປະກອບການເພື່ອທົດສອບອົງປະກອບເຫຼົ່ານີ້. ໄດ້
ອົງປະກອບຕໍ່ໄປນີ້ແມ່ນຮັບປະກັນວ່າມີ:
PROCINFO["egid"] ມູນຄ່າຂອງການ getegid(2) ລະບົບການໂທ.
PROCINFO["srftime"]
ສະຕຣິງຮູບແບບເວລາເລີ່ມຕົ້ນສຳລັບ strftime().
PROCINFO["euid"] ມູນຄ່າຂອງການ geteuid(2) ລະບົບການໂທ.
PROCINFO["FS"] "FS" ຖ້າຫາກວ່າພາກສະຫນາມແບ່ງປັນກັບ FS ມີຜົນກະທົບ, "FPAT" if
ການແບ່ງປັນພາກສະຫນາມກັບ ຟຟລ ມີຜົນບັງຄັບໃຊ້, ຫຼື "ເຂດທົ່ງນາ"
ຖ້າຫາກວ່າພາກສະຫນາມແບ່ງປັນກັບ ທົ່ງນາ ແມ່ນຢູ່ໃນຜົນກະທົບ.
PROCINFO["ຕົວລະບຸ"]
ແຖບຍ່ອຍ, ຖືກດັດສະນີໂດຍຊື່ຂອງຕົວລະບຸທັງໝົດທີ່ໃຊ້
ໃນຂໍ້ຄວາມຂອງໂຄງການ AWK. ຄຸນຄ່າຊີ້ບອກເຖິງສິ່ງທີ່
ແກວ ຮູ້ກ່ຽວກັບຕົວລະບຸຫຼັງຈາກມັນສໍາເລັດ
parsing ໂຄງການ; ພວກເຂົາແມ່ນ ບໍ່ ປັບປຸງໃນຂະນະທີ່
ດໍາເນີນໂຄງການ. ສໍາລັບແຕ່ລະຕົວລະບຸ, ຄ່າຂອງ
ອົງປະກອບແມ່ນຫນຶ່ງໃນດັ່ງຕໍ່ໄປນີ້:
"ອາເຣ"
ຕົວລະບຸແມ່ນອາເຣ.
"ກໍ່ສ້າງ"
ຕົວລະບຸເປັນຟັງຊັນໃນຕົວ.
"ສ່ວນຂະຫຍາຍ"
ຕົວລະບຸແມ່ນຫນ້າທີ່ຂະຫຍາຍທີ່ໂຫລດຜ່ານ
@ໂຫຼດ or -l.
"ເກັດ"
ໂຕລະບຸແມ່ນສະເກັດລາ.
"ບໍ່ໄດ້ພິມ"
ຕົວລະບຸບໍ່ໄດ້ພິມ (ສາມາດໃຊ້ເປັນ a
scalar ຫຼື array, ແກວ ຍັງບໍ່ຮູ້).
"ຜູ້ໃຊ້" ຕົວກໍານົດແມ່ນຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້.
PROCINFO["gid"] ມູນຄ່າຂອງການ getgid(2) ລະບົບການໂທ.
PROCINFO["pgrpid"] ID ກຸ່ມຂະບວນການຂອງຂະບວນການປະຈຸບັນ.
PROCINFO["pid"] ID ຂະບວນການຂອງຂະບວນການປະຈຸບັນ.
PROCINFO["ppid"] ID ຂະບວນການແມ່ຂອງຂະບວນການປະຈຸບັນ.
PROCINFO["uid"] ມູນຄ່າຂອງການ ຂີ້ຄ້ານ(2) ລະບົບການໂທ.
PROCINFO["sorted_in"]
ຖ້າອົງປະກອບນີ້ມີຢູ່ໃນ PROCINFO, ຫຼັງຈາກນັ້ນມູນຄ່າຂອງມັນ
ຄວບຄຸມຄໍາສັ່ງທີ່ອົງປະກອບ array ຖືກ traversed
in ສໍາລັບການ ວົງ. ຄ່າທີ່ສະຫນັບສະຫນູນແມ່ນ "@ind_str_asc",
"@ind_num_asc", "@val_type_asc", "@val_str_asc",
"@val_num_asc", "@ind_str_desc", "@ind_num_desc",
"@val_type_desc", "@val_str_desc", "@val_num_desc", ແລະ
"@ບໍ່ໄດ້ຈັດຮຽງ". ຄ່າຍັງສາມາດເປັນຊື່ຂອງອັນໃດກໍ່ໄດ້
ການທໍາງານການປຽບທຽບກໍານົດດັ່ງຕໍ່ໄປນີ້:
ຫນ້າທີ່ cmp_func(i1, v1, i2, v2)
ບ່ອນທີ່ i1 ແລະ i2 ແມ່ນຕົວຊີ້ວັດ, ແລະ v1 ແລະ v2 ແມ່ນ
ຄ່າທີ່ສອດຄ້ອງກັນຂອງສອງອົງປະກອບທີ່ຖືກປຽບທຽບ.
ມັນຄວນຈະສົ່ງຄືນຕົວເລກທີ່ນ້ອຍກວ່າ, ເທົ່າກັບ, ຫຼືໃຫຍ່ກວ່າ
ຫຼາຍກວ່າ 0, ຂຶ້ນກັບອົງປະກອບຂອງອາເຣ
ຖືກສັ່ງ.
PROCINFO["ການປ້ອນ", "READ_TIMEOUT"]
ໝົດເວລາໃນມິນລິວິນາທີສຳລັບການອ່ານຂໍ້ມູນຈາກ ການປ້ອນຂໍ້ມູນ,
ບ່ອນທີ່ ການປ້ອນຂໍ້ມູນ ແມ່ນສາຍການປ່ຽນເສັ້ນທາງ ຫຼືຊື່ໄຟລ໌. ຄ່າ
ຂອງສູນຫຼືຫນ້ອຍກວ່າສູນຫມາຍຄວາມວ່າບໍ່ມີເວລາຫມົດເວລາ.
PROCINFO["mpfr_version"]
ສະບັບຂອງຫ້ອງສະຫມຸດ GNU MPFR ທີ່ໃຊ້ສໍາລັບ arbitrary
ຕົວເລກຄວາມແມ່ນຍໍາສະຫນັບສະຫນູນໃນ ແກວ. ການເຂົ້ານີ້ບໍ່ແມ່ນ
ປະຈຸບັນຖ້າການສະຫນັບສະຫນູນ MPFR ບໍ່ໄດ້ຖືກລວບລວມເຂົ້າໃນ ແກວ.
PROCINFO["gmp_version"]
ສະບັບຂອງຫ້ອງສະຫມຸດ GNU MP ທີ່ໃຊ້ສໍາລັບການ arbitrary
ຕົວເລກຄວາມແມ່ນຍໍາສະຫນັບສະຫນູນໃນ ແກວ. ການເຂົ້ານີ້ບໍ່ແມ່ນ
ປະຈຸບັນຖ້າການສະຫນັບສະຫນູນ MPFR ບໍ່ໄດ້ຖືກລວບລວມເຂົ້າໃນ ແກວ.
PROCINFO["prec_max"]
ຄວາມແມ່ນຍໍາສູງສຸດທີ່ສະຫນັບສະຫນູນໂດຍຫ້ອງສະຫມຸດ GNU MPFR
ສໍາລັບຕົວເລກຈຸດເລື່ອນຄວາມແມ່ນຍໍາໂດຍຕົນເອງ. ນີ້
ການເຂົ້າແມ່ນບໍ່ມີຖ້າການສະຫນັບສະຫນູນ MPFR ບໍ່ໄດ້ຖືກລວບລວມເຂົ້າໃນ
ແກວ.
PROCINFO["prec_min"]
ຄວາມແມ່ນຍໍາຕໍາ່ສຸດທີ່ອະນຸຍາດໂດຍຫ້ອງສະຫມຸດ GNU MPFR ສໍາລັບ
ຕົວເລກຈຸດທີ່ເລື່ອນໄດ້ຕາມໃຈມັກ. ການເຂົ້ານີ້ແມ່ນ
ບໍ່ມີຖ້າການສະຫນັບສະຫນູນ MPFR ບໍ່ໄດ້ຖືກລວບລວມເຂົ້າໃນ ແກວ.
PROCINFO["api_major"]
ຮຸ່ນຫຼັກຂອງ API ສ່ວນຂະຫຍາຍ. ການເຂົ້ານີ້ບໍ່ແມ່ນ
ປະຈຸບັນຖ້າການໂຫຼດສ່ວນຂະຫຍາຍແບບໄດນາມິກບໍ່ສາມາດໃຊ້ໄດ້.
PROCINFO["api_minor"]
ຮຸ່ນນ້ອຍຂອງ API ສ່ວນຂະຫຍາຍ. ການເຂົ້ານີ້ບໍ່ແມ່ນ
ປະຈຸບັນຖ້າການໂຫຼດສ່ວນຂະຫຍາຍແບບໄດນາມິກບໍ່ສາມາດໃຊ້ໄດ້.
PROCINFO["ຮຸ່ນ"] ສະບັບຂອງ ແກວ.
ຮອບວຽນ ຮູບແບບການມົນທີ່ຈະນໍາໃຊ້ສໍາລັບການເລກຄະນິດສາດຄວາມແມ່ນຍໍາໂດຍຕົນເອງໂດຍ
Default "N" (ໂໝດ IEEE-754 roundTiesToEven). ຄ່າທີ່ຍອມຮັບແມ່ນ "N" or
"n" ສໍາລັບ roundTiesToEven, "ຫຼື" or "ເຈົ້າ" ສໍາລັບ roundTowardPositive, "D" or "d" ສໍາລັບການ
ຮອບສູ່ທາງລົບ, "Z" or "z" ສໍາລັບ roundTowardZero, ແລະຖ້າຫາກວ່າສະບັບຂອງທ່ານ
ຫ້ອງສະຫມຸດ GNU MPFR ສະຫນັບສະຫນູນມັນ, "TO" or "ກ" ສໍາລັບ roundTiesToAway.
RS ຕົວແຍກບັນທຶກການປ້ອນຂໍ້ມູນ, ຕາມຄ່າເລີ່ມຕົ້ນຂອງແຖວໃໝ່.
RT terminator ການບັນທຶກ. ແກວ ຊຸດ RT ໃສ່ຂໍ້ຄວາມທີ່ເຂົ້າກັນກັບ
ລັກສະນະຫຼືສະແດງອອກປົກກະຕິລະບຸໄວ້ໂດຍ RS.
RSTART ດັດຊະນີຂອງຕົວອັກສອນທໍາອິດທີ່ຈັບຄູ່ໂດຍ ການແຂ່ງຂັນ(); 0 ຖ້າບໍ່ກົງກັນ. (ນີ້
ຫມາຍຄວາມວ່າຕົວຊີ້ວັດລັກສະນະເລີ່ມຕົ້ນທີ່ຫນຶ່ງ.)
RLENGTH ຄວາມຍາວຂອງສະຕຣິງຈັບຄູ່ໂດຍ ການແຂ່ງຂັນ(); -1 ຖ້າບໍ່ກົງກັນ.
SUBSEP ຕົວອັກສອນທີ່ໃຊ້ເພື່ອແຍກຕົວໜັງສືຍ່ອຍຫຼາຍອັນໃນອົງປະກອບອາເຣ, ໂດຍ
Default "\034".
SYMTAB Array ທີ່ມີດັດຊະນີແມ່ນຊື່ຂອງຕົວແປທົ່ວໂລກທີ່ກໍານົດໃນປັດຈຸບັນ
ແລະ arrays ໃນໂຄງການ. array ອາດຈະຖືກນໍາໃຊ້ສໍາລັບການເຂົ້າເຖິງທາງອ້ອມເພື່ອອ່ານ
ຫຼືຂຽນຄ່າຂອງຕົວແປ:
ຟູ = 5
SYMTAB["foo"] = 4
ພິມ ຟູ # ພິມ 4
ໄດ້ isarray() ຟັງຊັນອາດຈະຖືກໃຊ້ເພື່ອທົດສອບວ່າອົງປະກອບຢູ່ໃນ SYMTAB ເປັນ
array. ເຈົ້າອາດຈະບໍ່ໃຊ້ ລຶບ ຖະແຫຼງການກັບ SYMTAB ຂບວນ.
TEXTDOMAIN ໂດເມນຂໍ້ຄວາມຂອງໂຄງການ AWK; ໃຊ້ເພື່ອຊອກຫາການແປພາສາທ້ອງຖິ່ນ
ສໍາລັບສາຍຂອງໂປຣແກຣມ.
ອາເລ
Arrays ແມ່ນ subscripted ດ້ວຍການສະແດງອອກລະຫວ່າງວົງເລັບສີ່ຫລ່ຽມ ([ ແລະ ]). ຖ້າວ່າ
expression ແມ່ນລາຍການສະແດງອອກ (ຕົວຢ່າງ, ຕົວຢ່າງ ... ) ຫຼັງຈາກນັ້ນ array subscript ເປັນ string
ປະກອບດ້ວຍ concatenation ຂອງຄ່າ (string) ຂອງແຕ່ລະການສະແດງອອກ, ແຍກໂດຍ
ມູນຄ່າຂອງ SUBSEP ຕົວແປ. ສິ່ງອໍານວຍຄວາມສະດວກນີ້ຖືກນໍາໃຊ້ເພື່ອຈໍາລອງການທະວີຄູນ
arrays. ຍົກຕົວຢ່າງ:
i = “ກ”; j = "ຂ"; k = "C"
x[i, j, k] = "ສະບາຍດີ, ໂລກ\n"
ມອບໝາຍສະຕຣິງ "ສະບາຍດີ, ໂລກ\n" ກັບອົງປະກອບຂອງ array x ເຊິ່ງຖືກດັດສະນີໂດຍ
string "A\034B\034C". array ທັງໝົດໃນ AWK ແມ່ນເຊື່ອມໂຍງກັນ, ie, indexed by string values.
ຜູ້ປະຕິບັດງານພິເສດ in ອາດຈະຖືກນໍາໃຊ້ເພື່ອທົດສອບວ່າ array ມີດັດຊະນີປະກອບດ້ວຍ a
ມູນຄ່າສະເພາະ:
if (ວາລະ in array)
ພິມ array[val]
ຖ້າ array ມີ subscripts ຫຼາຍ, ໃຊ້ (ຂ້ອຍ, j) in array.
ໄດ້ in ການກໍ່ສ້າງອາດຈະຖືກນໍາໃຊ້ໃນ a ສໍາລັບການ loop ເພື່ອ iterate ຫຼາຍກວ່າອົງປະກອບທັງຫມົດຂອງ an
array. ຢ່າງໃດກໍຕາມ, ໄດ້ (ຂ້ອຍ, j) in array ການກໍ່ສ້າງພຽງແຕ່ເຮັດວຽກໃນການທົດສອບ, ບໍ່ແມ່ນໃນ ສໍາລັບການ ວົງ.
ອົງປະກອບອາດຈະຖືກລຶບອອກຈາກ array ໂດຍໃຊ້ ລຶບ ຖະແຫຼງການ. ໄດ້ ລຶບ ຄໍາຖະແຫຼງທີ່
ອາດຈະຖືກໃຊ້ເພື່ອລຶບເນື້ອຫາທັງໝົດຂອງ array, ພຽງແຕ່ລະບຸ array
ຊື່ທີ່ບໍ່ມີຕົວຫຍໍ້.
ແກວ ສະຫນັບສະຫນູນອາເຣ multidimensional ທີ່ແທ້ຈິງ. ມັນບໍ່ໄດ້ຮຽກຮ້ອງໃຫ້ array ດັ່ງກ່າວເປັນ
`` ສີ່ຫຼ່ຽມ '' ໃນ C ຫຼື C ++. ຍົກຕົວຢ່າງ:
a[1] = 5
a[2][1] = 6
a[2][2] = 7
ຫມາຍເຫດ: ເຈົ້າອາດຕ້ອງບອກ ແກວ ວ່າອົງປະກອບ array ແມ່ນແທ້ໆ subarray ເພື່ອໃຊ້
ມັນຢູ່ໃສ ແກວ ຄາດຫວັງ array (ເຊັ່ນ: ໃນ argument ທີສອງ to ແບ່ງປັນ ()). ເຈົ້າສາມາດເຮັດໄດ້
ນີ້ໂດຍການສ້າງອົງປະກອບໃນ subarray ແລະຫຼັງຈາກນັ້ນລຶບມັນດ້ວຍ ລຶບ
ຄໍາຖະແຫຼງທີ່.
ການປ່ຽນແປງ ການພິມ ແລະ ການປ່ຽນແປງ
ຕົວແປ ແລະຊ່ອງຂໍ້ມູນອາດຈະເປັນຕົວເລກ (ຈຸດລອຍ) ຫຼືສະຕຣິງ ຫຼືທັງສອງ. ມູນຄ່າແນວໃດ
ຂອງຕົວແປຖືກຕີຄວາມຂື້ນກັບສະພາບການຂອງມັນ. ຖ້າໃຊ້ໃນການສະແດງອອກເປັນຕົວເລກ,
ມັນຈະຖືກປະຕິບັດເປັນຕົວເລກ; ຖ້າໃຊ້ເປັນສາຍມັນຈະຖືກປະຕິບັດເປັນສາຍ.
ເພື່ອບັງຄັບໃຫ້ຕົວແປຖືກປະຕິບັດເປັນຕົວເລກ, ເພີ່ມ 0 ໃສ່ມັນ; ເພື່ອບັງຄັບໃຫ້ມັນຖືກປະຕິບັດເປັນ
string, concatenate ມັນກັບ string null.
ຕົວແປທີ່ບໍ່ໄດ້ກຳນົດເອງມີຄ່າຕົວເລກ 0 ແລະຄ່າສະຕຣິງ "" (the null, or
ຫວ່າງເປົ່າ, string).
ເມື່ອສະຕຣິງຕ້ອງຖືກແປງເປັນຕົວເລກ, ການແປງແມ່ນສໍາເລັດໂດຍໃຊ້
strtod(3). ຕົວເລກຖືກປ່ຽນເປັນສະຕຣິງໂດຍໃຊ້ຄ່າຂອງ CONVFMT ເປັນຮູບແບບ
ຊ່ອຍແນ່ ແລ່ນ(3), ທີ່ມີຄ່າຕົວເລກຂອງຕົວແປເປັນ argument. ແນວໃດກໍ່ຕາມ,
ເຖິງແມ່ນວ່າຕົວເລກທັງຫມົດໃນ AWK ແມ່ນຈຸດທີ່ເລື່ອນໄດ້, ມູນຄ່າລວມແມ່ນ ສະເຫມີໄປ ປ່ຽນເປັນ
ຈຳນວນເຕັມ. ດັ່ງນັ້ນ, ໃຫ້
CONVFMT = "%2.2f"
a = 12
b = a ""
ຕົວແປ b ມີຄ່າສະຕຣິງຂອງ "12" ແລະບໍ່ "12.00".
ຫມາຍເຫດ: ເມື່ອເຮັດວຽກຢູ່ໃນໂຫມດ POSIX (ເຊັ່ນ: ກັບ --posix ທາງເລືອກ), ລະວັງທ້ອງຖິ່ນນັ້ນ
ການຕັ້ງຄ່າອາດຈະລົບກວນວິທີການປະຕິບັດຕົວເລກທົດສະນິຍົມ: ຕົວແຍກທົດສະນິຍົມຂອງ
ຕົວເລກທີ່ທ່ານກໍາລັງໃຫ້ອາຫານ ແກວ ຕ້ອງສອດຄ່ອງກັບສິ່ງທີ່ທ້ອງຖິ່ນຂອງເຈົ້າຄາດຫວັງ, ບໍ່ວ່າຈະເປັນ
comma (,) ຫຼືໄລຍະເວລາ (.).
ແກວ ປະຕິບັດການປຽບທຽບດັ່ງຕໍ່ໄປນີ້: ຖ້າສອງຕົວແປເປັນຕົວເລກ, ພວກມັນຈະຖືກປຽບທຽບ
ຕົວເລກ. ຖ້າຄ່າໜຶ່ງເປັນຕົວເລກ ແລະອີກອັນໜຶ່ງມີຄ່າສະຕຣິງທີ່ເປັນ “ຕົວເລກ
string,” ຫຼັງຈາກນັ້ນການປຽບທຽບແມ່ນເຮັດເປັນຕົວເລກ. ຖ້າບໍ່ດັ່ງນັ້ນ, ຄ່າຕົວເລກແມ່ນ
ປ່ຽນເປັນສະຕຣິງແລະການປຽບທຽບສະຕຣິງຖືກປະຕິບັດ. ສອງສາຍຖືກປຽບທຽບ, ຂອງ
ແນ່ນອນ, ເປັນສາຍ.
ໃຫ້ສັງເກດວ່າ string constant, ເຊັ່ນ: "57", ແມ່ນ ບໍ່ ສະຕຣິງຕົວເລກ, ພວກມັນເປັນສາຍ
ຄົງທີ່. ແນວຄວາມຄິດຂອງ "ສະຕຣິງຕົວເລກ" ພຽງແຕ່ໃຊ້ກັບຊ່ອງຂໍ້ມູນ, ສາຍ ການປ້ອນຂໍ້ມູນ, ຊື່ເອກະສານ,
ARGV ອົງປະກອບ, ສະພາບແວດລ້ອມ ອົງປະກອບແລະອົງປະກອບຂອງ array ທີ່ສ້າງຂຶ້ນໂດຍ ແບ່ງປັນ () or
patsplit() ນັ້ນແມ່ນສາຍຕົວເລກ. ແນວຄວາມຄິດພື້ນຖານແມ່ນວ່າ ຜູ້ໃຊ້ ການປ້ອນຂໍ້ມູນ, ແລະຜູ້ໃຊ້ເທົ່ານັ້ນ
ການປ້ອນຂໍ້ມູນ, ທີ່ມີລັກສະນະເປັນຕົວເລກ, ຄວນຖືກປະຕິບັດແບບນັ້ນ.
ຕຸລາ ແລະ Hexadecimal ຄົງທີ່
ທ່ານອາດຈະໃຊ້ C-style octal ແລະ hexadecimal constants ໃນລະຫັດແຫຼ່ງໂຄງການ AWK ຂອງທ່ານ. ສໍາລັບ
ຕົວຢ່າງ, ຄ່າເລກແປດ 011 ເທົ່າກັບອັດຕານິຍົມ 9, ແລະຄ່າເລກຖານສິບຫົກ 0x11 is
ເທົ່າກັບ 17.
string ຄົງທີ່
ຄົງສະຕຣິງໃນ AWK ແມ່ນລໍາດັບຂອງຕົວອັກສອນທີ່ອ້ອມຮອບລະຫວ່າງວົງຢືມຄູ່ (ເຊັ່ນ
"ຄຸນຄ່າ"). ພາຍໃນສາຍ, ແນ່ນອນ escape ລໍາດັບ ໄດ້ຖືກຮັບຮູ້, ດັ່ງໃນ C. ເຫຼົ່ານີ້ແມ່ນ:
\\ ເປັນ backslash ທີ່ຮູ້ຫນັງສື.
\a ລັກສະນະ "ເຕືອນ"; ປົກກະຕິແລ້ວແມ່ນຕົວອັກສອນ ASCII BEL.
\b Backspace.
\f ແບບຟອມອາຫານ.
\n ແຖວໃໝ່.
\r ສົ່ງຄືນ.
\t ແຖບແນວນອນ.
\v ແຖບແນວຕັ້ງ.
\xhex ຕົວເລກ
ຕົວອັກສອນທີ່ສະແດງໂດຍສະຕຣິງຂອງຕົວເລກເລກຖານສິບຫົກຕໍ່ໄປນີ້ \x. ໃນຖານະ
ໃນ ISO C, ຕົວເລກເລກຖານສິບຫົກຕໍ່ໄປນີ້ແມ່ນຖືວ່າເປັນສ່ວນໜຶ່ງຂອງການຫລົບໜີ
ລຳດັບ. (ຄຸນນະສົມບັດນີ້ຄວນບອກພວກເຮົາບາງສິ່ງບາງຢ່າງກ່ຽວກັບການອອກແບບພາສາໂດຍ
ຄະນະກໍາມະການ.) ຕົວຢ່າງ, "\x1B" ແມ່ນລັກສະນະ ASCII ESC (escape).
\ddd ຕົວອັກສອນທີ່ສະແດງໂດຍລໍາດັບ 1-, 2-, ຫຼື 3 ຕົວເລກຂອງຕົວເລກແປດ. ຕົວຢ່າງ:
"\033" ແມ່ນລັກສະນະ ASCII ESC (escape).
\c ຕົວໜັງສື c.
ລໍາດັບການຫລົບຫນີອາດຈະຖືກໃຊ້ພາຍໃນສໍານວນປົກກະຕິຄົງທີ່ (ເຊັ່ນ:
/[ \t\f\n\r\v]/ ກົງກັບຕົວອັກສອນຊ່ອງຂາວ).
ໃນໂຫມດຄວາມເຂົ້າກັນໄດ້, ຕົວອັກສອນທີ່ສະແດງໂດຍການຫລົບຫນີເລກຖານແປດແລະເລກສິບຫົກ
ລໍາດັບແມ່ນປະຕິບັດການຮູ້ຫນັງສືໃນເວລາທີ່ຖືກນໍາໃຊ້ໃນຄົງທີ່ສະແດງອອກເປັນປົກກະຕິ. ດັ່ງນັ້ນ, /a\52b/
ເທົ່າກັບ /a\*b/.
ຕາຕະລາງ ແລະ ກິດຈະກໍາ
AWK ເປັນພາສາທີ່ເນັ້ນໃສ່ເສັ້ນ. ຮູບແບບມາຄັ້ງທໍາອິດ, ແລະຫຼັງຈາກນັ້ນການປະຕິບັດ. ການປະຕິບັດ
ຄໍາຖະແຫຼງການແມ່ນໄດ້ປິດຢູ່ໃນ { ແລະ }. ຮູບແບບອາດຈະຫາຍໄປ, ຫຼືການດໍາເນີນການອາດຈະ
ຫາຍໄປ, ແຕ່, ແນ່ນອນ, ບໍ່ແມ່ນທັງສອງ. ຖ້າຮູບແບບຂາດຫາຍໄປ, ການປະຕິບັດຈະຖືກປະຕິບັດ
ສໍາລັບທຸກໆບັນທຶກດຽວຂອງການປ້ອນຂໍ້ມູນ. ການປະຕິບັດທີ່ຂາດຫາຍໄປແມ່ນເທົ່າກັບ
{ ພິມ }
ເຊິ່ງພິມບັນທຶກທັງໝົດ.
ຄໍາເຫັນເລີ່ມຕົ້ນດ້ວຍ # ລັກສະນະ, ແລະສືບຕໍ່ຈົນກ່ວາໃນຕອນທ້າຍຂອງເສັ້ນ. ສາຍເປົ່າ
ອາດຈະຖືກນໍາໃຊ້ເພື່ອແຍກຄໍາຖະແຫຼງການ. ໂດຍປົກກະຕິ, ຄໍາຖະແຫຼງທີ່ສິ້ນສຸດລົງດ້ວຍແຖວໃຫມ່, ແນວໃດກໍ່ຕາມ,
ນີ້ບໍ່ແມ່ນກໍລະນີສໍາລັບແຖວທີ່ລົງທ້າຍດ້ວຍເຄື່ອງໝາຍຈຸດ, {, ?, :, &&, ຫຼື ||. ແຖວທີ່ລົງທ້າຍດ້ວຍ do
or ອື່ນ ຍັງມີຄໍາຖະແຫຼງຂອງພວກເຂົາອັດຕະໂນມັດສືບຕໍ່ຢູ່ໃນແຖວຕໍ່ໄປນີ້. ໃນ
ກໍລະນີອື່ນ, ແຖວສາມາດສືບຕໍ່ໄດ້ໂດຍການສິ້ນສຸດດ້ວຍ “\”, ໃນກໍລະນີນີ້ແມ່ນແຖວໃໝ່
ບໍ່ສົນໃຈ.
ຂໍ້ຄວາມຫຼາຍອັນອາດຈະຖືກໃສ່ໃນແຖວໜຶ່ງໂດຍການແຍກພວກມັນດ້ວຍ “;”. ນີ້ໃຊ້ກັບ
ທັງສອງຖະແຫຼງການພາຍໃນພາກສ່ວນການປະຕິບັດຂອງຄູ່ຮູບແບບການປະຕິບັດ (ກໍລະນີປົກກະຕິ), ແລະ
ຕໍ່ກັບຄໍາຖະແຫຼງການແບບປະຕິບັດຕົວຂອງມັນເອງ.
ຮູບແບບການ
ຮູບແບບ AWK ອາດຈະເປັນຫນຶ່ງໃນຕໍ່ໄປນີ້:
ເລີ່ມຕົ້ນ
END
BEGINFILE
ENDFILE
/ປົກກະຕິ ການສະແດງອອກ/
ທີ່ກ່ຽວຂ້ອງ ການສະແດງອອກ
ຮູບແບບ && ຮູບແບບ
ຮູບແບບ || ຮູບແບບ
ຮູບແບບ ? ຮູບແບບ : ຮູບແບບ
(ຮູບແບບ)
! ຮູບແບບ
ຮູບແບບ 1, ຮູບແບບ 2
ເລີ່ມຕົ້ນ ແລະ END ແມ່ນສອງປະເພດພິເສດຂອງຮູບແບບທີ່ບໍ່ໄດ້ທົດສອບຕໍ່ກັບວັດສະດຸປ້ອນ.
ພາກສ່ວນການປະຕິບັດຂອງທັງຫມົດ ເລີ່ມຕົ້ນ ຮູບແບບຕ່າງໆແມ່ນຖືກລວມເຂົ້າກັນເປັນຖ້າຫາກວ່າຄໍາຖະແຫຼງການທັງຫມົດໄດ້ຮັບການ
ຂຽນເປັນອັນດຽວ ເລີ່ມຕົ້ນ ກົດລະບຽບ. ພວກມັນຈະຖືກປະຕິບັດກ່ອນທີ່ຈະອ່ານຂໍ້ມູນໃດໆ.
ເຊັ່ນດຽວກັນ, ທັງຫມົດ END ກົດລະບຽບແມ່ນໄດ້ຖືກລວມເຂົ້າ, ແລະປະຕິບັດໃນເວລາທີ່ການປ້ອນຂໍ້ມູນທັງຫມົດຫມົດ (ຫຼື
ເມື່ອເປັນ ການທ່ອງທ່ຽວ ຖະແຫຼງການຖືກປະຕິບັດ). ເລີ່ມຕົ້ນ ແລະ END ຮູບແບບບໍ່ສາມາດຖືກລວມເຂົ້າກັບແບບອື່ນໆ
ຮູບແບບໃນການສະແດງອອກຮູບແບບ. ເລີ່ມຕົ້ນ ແລະ END ຮູບແບບບໍ່ສາມາດມີສ່ວນປະຕິບັດທີ່ຂາດຫາຍໄປ.
BEGINFILE ແລະ ENDFILE ແມ່ນຮູບແບບພິເສດເພີ່ມເຕີມທີ່ຮ່າງກາຍໄດ້ຖືກປະຕິບັດກ່ອນ
ການອ່ານບັນທຶກທຳອິດຂອງແຕ່ລະໄຟລ໌ປ້ອນເສັ້ນຄຳສັ່ງ ແລະຫຼັງຈາກອ່ານບັນທຶກສຸດທ້າຍ
ຂອງແຕ່ລະໄຟລ໌. ພາຍໃນ BEGINFILE ກົດລະບຽບ, ມູນຄ່າຂອງ ERRNO ຈະເປັນສະຕຣິງຫວ່າງເປົ່າຖ້າ
ໄຟລ໌ໄດ້ຖືກເປີດຢ່າງສໍາເລັດຜົນ. ຖ້າບໍ່ດັ່ງນັ້ນ, ມີບັນຫາບາງຢ່າງກັບໄຟລ໌ແລະ
ລະຫັດຄວນໃຊ້ ໄຟລ໌ຕໍ່ໄປ ເພື່ອຂ້າມມັນ. ຖ້າບໍ່ເຮັດ, ແກວ ຜະລິດຕະພັນຄວາມຕາຍຕາມປົກກະຕິຂອງຕົນ
ຂໍ້ຜິດພາດສໍາລັບໄຟລ໌ທີ່ບໍ່ສາມາດເປີດໄດ້.
ສໍາລັບການ /ປົກກະຕິ ການສະແດງອອກ/ ຮູບແບບ, ຄໍາຖະແຫຼງການທີ່ກ່ຽວຂ້ອງແມ່ນປະຕິບັດສໍາລັບການປ້ອນຂໍ້ມູນແຕ່ລະຄົນ
ບັນທຶກທີ່ກົງກັບການສະແດງຜົນປົກກະຕິ. ການສະແດງອອກປົກກະຕິແມ່ນຄືກັນກັບທີ່ຢູ່ໃນ
ຕົວຢ່າງ(1), ແລະໄດ້ຖືກສະຫຼຸບຂ້າງລຸ່ມນີ້.
A ທີ່ກ່ຽວຂ້ອງ ການສະແດງອອກ ອາດຈະນໍາໃຊ້ໃດຫນຶ່ງຂອງປະຕິບັດການທີ່ກໍານົດໄວ້ຂ້າງລຸ່ມນີ້ໃນພາກສ່ວນກ່ຽວກັບການ
ການກະທໍາ. ໂດຍທົ່ວໄປແລ້ວສິ່ງເຫຼົ່ານີ້ຈະທົດສອບວ່າຊ່ອງຂໍ້ມູນໃດນຶ່ງກົງກັນກັບການສະແດງຜົນປົກກະຕິທີ່ແນ່ນອນຫຼືບໍ່.
ໄດ້ &&, ||, ແລະ ! ໂຕປະຕິບັດການມີເຫດຜົນ AND, ມີເຫດຜົນ OR, ແລະບໍ່ມີເຫດຜົນຕາມລໍາດັບ,
ເຊັ່ນດຽວກັບໃນ C. ພວກເຂົາເຈົ້າເຮັດການປະເມີນວົງຈອນສັ້ນ, ເຊັ່ນດຽວກັນໃນ C, ແລະຖືກນໍາໃຊ້ສໍາລັບການສົມທົບຫຼາຍ.
ການສະແດງອອກຂອງຮູບແບບເບື້ອງຕົ້ນ. ເຊັ່ນດຽວກັນກັບພາສາສ່ວນໃຫຍ່, ວົງເລັບອາດຈະຖືກນໍາໃຊ້ເພື່ອປ່ຽນແປງ
ຄໍາສັ່ງຂອງການປະເມີນຜົນ.
ໄດ້ ?: operator ແມ່ນຄືກັບຕົວປະຕິບັດການດຽວກັນໃນ C. ຖ້າຮູບແບບທໍາອິດເປັນຄວາມຈິງຫຼັງຈາກນັ້ນ the
ຮູບແບບທີ່ໃຊ້ສໍາລັບການທົດສອບແມ່ນຮູບແບບທີສອງ, ຖ້າບໍ່ດັ່ງນັ້ນມັນແມ່ນຮູບແບບທີສາມ. ພຽງແຕ່ຫນຶ່ງຂອງ
ຮູບແບບທີສອງແລະທີສາມແມ່ນໄດ້ຖືກປະເມີນ.
ໄດ້ ຮູບແບບ 1, ຮູບແບບ 2 ຮູບແບບການສະແດງອອກແມ່ນເອີ້ນວ່າ a ລະດັບ ຮູບແບບ. ມັນກົງກັບທັງຫມົດ
ບັນທຶກການປ້ອນຂໍ້ມູນເລີ່ມຕົ້ນດ້ວຍບັນທຶກທີ່ກົງກັນ ຮູບແບບ 1, ແລະສືບຕໍ່ຈົນກ່ວາບັນທຶກ
ທີ່ກົງກັນ ຮູບແບບ 2, ລວມ. ມັນບໍ່ໄດ້ປະສົມປະສານກັບຮູບແບບອື່ນໆ
ການສະແດງອອກ.
ເປັນປົກກະຕິ ສຳ ນວນ
ການສະແດງອອກປົກກະຕິແມ່ນປະເພດຂະຫຍາຍທີ່ພົບເຫັນຢູ່ໃນ ຕົວຢ່າງ. ພວກເຂົາເຈົ້າແມ່ນປະກອບດ້ວຍລັກສະນະ
ດັ່ງຕໍ່ໄປນີ້:
c ກົງກັບຕົວອັກສອນທີ່ບໍ່ແມ່ນຕົວແປ c.
\c ກົງກັບຕົວອັກສອນ c.
. ກົງກັບລັກສະນະໃດນຶ່ງ ລວມທັງ ແຖວໃໝ່.
^ ກົງກັບຈຸດເລີ່ມຕົ້ນຂອງສະຕຣິງ.
$ ກົງກັບຈຸດສິ້ນສຸດຂອງສະຕຣິງ.
[abc...] ລາຍຊື່ຕົວອັກສອນ: ກົງກັບຕົວອັກສອນໃດນຶ່ງ abc.... ທ່ານອາດຈະປະກອບມີ a
ຂອບເຂດຂອງຕົວອັກສອນໂດຍການແຍກພວກມັນອອກດ້ວຍ dash.
[^abc...] ບັນຊີລາຍຊື່ຕົວອັກສອນທີ່ຖືກລົບ: ກົງກັບຕົວອັກສອນໃດນຶ່ງ ຍົກເວັ້ນ abc....
r1|r2 ສະຫຼັບ: ກົງກັນ r1 or r2.
r1r2 Concatenation: ກົງກັນ r1, ແລະຫຼັງຈາກນັ້ນ r2.
r+ ກົງກັບໜຶ່ງ ຫຼືຫຼາຍກວ່ານັ້ນ r's.
r* ກົງກັບສູນ ຫຼືຫຼາຍກວ່ານັ້ນ r's.
r? ກົງກັບສູນ ຫຼືໜຶ່ງ r's.
(r) ການຈັດກຸ່ມ: ກົງກັນ r.
r{n}
r{n,}
r{n,m} ໜຶ່ງ ຫຼືສອງຕົວເລກພາຍໃນວົງເລັບໝາຍເຖິງ an ໄລຍະຫ່າງ ການສະແດງອອກ. ຖ້າມີ
ຕົວເລກໜຶ່ງໃນວົງເລັບ, ການສະແດງຜົນປົກກະຕິກ່ອນໜ້າ r ແມ່ນຊ້ໍາ n
ເທື່ອ. ຖ້າມີສອງຕົວເລກທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ, r ແມ່ນຊ້ໍາ n to m
ເທື່ອ. ຖ້າມີຕົວເລກໜຶ່ງຕາມດ້ວຍເຄື່ອງໝາຍຈຸດ, ຈາກນັ້ນ r ແມ່ນຊ້ໍາຢ່າງຫນ້ອຍ
n ເວລາ.
\y ກົງກັບສະຕຣິງຫວ່າງເປົ່າຢູ່ໃນຈຸດເລີ່ມຕົ້ນ ຫຼືທ້າຍຂອງຄຳສັບໃດໜຶ່ງ.
\B ກົງກັບສະຕຣິງຫວ່າງເປົ່າພາຍໃນຄຳສັບໃດໜຶ່ງ.
\< ກົງກັບສະຕຣິງຫວ່າງຢູ່ຈຸດເລີ່ມຕົ້ນຂອງຄຳສັບໃດໜຶ່ງ.
\> ກົງກັບສະຕຣິງຫວ່າງຢູ່ທ້າຍຄຳສັບໃດນຶ່ງ.
\s ກົງກັບຕົວອັກສອນຍະຫວ່າງໃດໆ.
\S ກົງກັບຕົວອັກສອນທີ່ບໍ່ມີຊ່ອງຫວ່າງໃດໆ.
\w ກົງກັບຕົວອັກສອນທີ່ເປັນອົງປະກອບຂອງຄໍາ (ຕົວອັກສອນ, ຕົວເລກ, ຫຼືຂີດກ້ອງ).
\W ກົງກັບຕົວລະຄອນໃດນຶ່ງທີ່ບໍ່ແມ່ນຄຳສັບ.
\` ກົງກັບສະຕຣິງຫວ່າງເປົ່າໃນຕອນຕົ້ນຂອງ buffer (string).
\' ກົງກັບສະຕຣິງຫວ່າງຢູ່ທ້າຍຂອງ buffer.
ລໍາດັບການຫລົບຫນີທີ່ຖືກຕ້ອງຢູ່ໃນຄ່າຄົງທີ່ຂອງສະຕຣິງ (ເບິ່ງ string ຄົງທີ່) ແມ່ນເຊັ່ນດຽວກັນ
ຖືກຕ້ອງໃນການສະແດງອອກປົກກະຕິ.
ລັກສະນະ ຫ້ອງຮຽນ ແມ່ນລັກສະນະທີ່ນໍາສະເຫນີໃນມາດຕະຖານ POSIX. ຫ້ອງຮຽນລັກສະນະເປັນ
ຫມາຍເຫດພິເສດສໍາລັບການອະທິບາຍລາຍຊື່ຂອງຕົວອັກສອນທີ່ມີຄຸນລັກສະນະສະເພາະ, ແຕ່
ບ່ອນທີ່ຕົວລະຄອນຕົວຈິງຂອງຕົວມັນເອງສາມາດແຕກຕ່າງກັນຈາກປະເທດໄປຫາປະເທດແລະ / ຫຼືຈາກ
ຕົວອັກສອນຕັ້ງເປັນຊຸດຕົວອັກສອນ. ຕົວຢ່າງ, ແນວຄວາມຄິດຂອງສິ່ງທີ່ເປັນຕົວອັກສອນ
ລັກສະນະແຕກຕ່າງກັນໃນສະຫະລັດແລະໃນປະເທດຝຣັ່ງ.
ປະເພດຕົວອັກສອນແມ່ນໃຊ້ໄດ້ໃນການສະແດງຜົນປົກກະຕິເທົ່ານັ້ນ ພາຍໃນ ວົງເລັບຂອງລັກສະນະ
ບັນຊີລາຍຊື່. ຫ້ອງຮຽນລັກສະນະປະກອບດ້ວຍ [:, ຄໍາສໍາຄັນທີ່ຫມາຍເຖິງຊັ້ນ, ແລະ :]. ໄດ້
ຫ້ອງຮຽນຕົວອັກສອນທີ່ກໍານົດໂດຍມາດຕະຖານ POSIX ແມ່ນ:
[:alnum:] ຕົວອັກສອນທີ່ເປັນຕົວເລກ.
[:alpha:] ຕົວໜັງສື.
[:ເປົ່າ:] ຍະຫວ່າງ ຫຼືຕົວອັກສອນແຖບ.
[:cntrl:] ຄວບຄຸມຕົວອັກສອນ.
[:ຕົວເລກ:] ຕົວເລກ.
[:ກຣາຟ:] ຕົວອັກສອນທີ່ທັງສາມາດພິມໄດ້ແລະເບິ່ງເຫັນໄດ້. (ພື້ນທີ່ສາມາດພິມໄດ້, ແຕ່ບໍ່ແມ່ນ
ສັງເກດເຫັນ, ໃນຂະນະທີ່ເປັນ a ແມ່ນທັງສອງ.)
[:ຕ່ໍາກວ່າ:] ຕົວພິມນ້ອຍ.
[:ພິມ:] ຕົວອັກສອນທີ່ສາມາດພິມໄດ້ (ຕົວອັກສອນທີ່ບໍ່ແມ່ນຕົວອັກສອນຄວບຄຸມ.)
[:punct:] ຕົວອັກສອນຫຍໍ້ໜ້າ (ຕົວອັກສອນທີ່ບໍ່ແມ່ນຕົວອັກສອນ, ຕົວເລກ, ການຄວບຄຸມ
ລັກສະນະ, ຫຼືຕົວອັກສອນຊ່ອງ).
[:ຊ່ອງ:] ຕົວອັກສອນຍະຫວ່າງ (ເຊັ່ນ: ຍະຫວ່າງ, ແຖບ, ແລະຮູບແບບຟີດ, ເພື່ອຕັ້ງຊື່ບາງອັນ).
[:ເທິງ:] ຕົວພິມໃຫຍ່.
[:xdigit:] ຕົວອັກສອນທີ່ເປັນຕົວເລກເລກຖານສິບຫົກ.
ຕົວຢ່າງ, ກ່ອນມາດຕະຖານ POSIX, ເພື່ອໃຫ້ກົງກັບຕົວອັກສອນທີ່ເປັນຕົວເລກ, ເຈົ້າຈະມີ
ຕ້ອງຂຽນ /[A-Za-z0-9]/. ຖ້າຊຸດຕົວລະຄອນຂອງເຈົ້າມີຕົວອັກສອນອື່ນໆຢູ່ໃນນັ້ນ,
ນີ້ຈະບໍ່ກົງກັບພວກມັນ, ແລະຖ້າຕົວລະຄອນຂອງເຈົ້າຖືກລວບລວມແຕກຕ່າງຈາກ ASCII, ນີ້
ອາດຈະບໍ່ກົງກັບຕົວອັກສອນ ASCII. ດ້ວຍຫ້ອງຮຽນຕົວອັກສອນ POSIX,
ເຈົ້າສາມາດຂຽນໄດ້ /[[:alnum:]]/, ແລະນີ້ກົງກັບຕົວອັກສອນແລະຕົວເລກໃນ
ລັກສະນະຂອງທ່ານ, ບໍ່ວ່າມັນເປັນແນວໃດ.
ສອງລໍາດັບພິເສດເພີ່ມເຕີມສາມາດປາກົດຢູ່ໃນລາຍຊື່ຕົວອັກສອນ. ເຫຼົ່ານີ້ໃຊ້ກັບທີ່ບໍ່ແມ່ນ ASCII
ຊຸດຕົວອັກສອນ, ເຊິ່ງສາມາດມີສັນຍາລັກດຽວ (ເອີ້ນວ່າ ການຄໍ້າປະກັນ ອົງປະກອບ) ນັ້ນແມ່ນ
ເປັນຕົວແທນທີ່ມີຫຼາຍກວ່າຫນຶ່ງຕົວອັກສອນ, ເຊັ່ນດຽວກັນກັບຕົວລະຄອນຫຼາຍຕົວ
ທຽບເທົ່າ ສຳ ລັບ ການຄໍ້າປະກັນ, ຫຼືການຈັດລຽງ, ຈຸດປະສົງ. (ຕົວຢ່າງ, ໃນພາສາຝຣັ່ງ, ທໍາມະດາ "e" ແລະ a
grave-accented “`” ແມ່ນທຽບເທົ່າ.)
ການສ້າງສັນຍາລັກ
ສັນຍາລັກການປະກອບເປັນອົງປະກອບການປະກອບຫຼາຍຕົວອັກສອນທີ່ຕິດຢູ່ໃນ [. ແລະ .].
ຕົວຢ່າງ, ຖ້າ ch ແມ່ນອົງປະກອບທີ່ລວບລວມ, ຫຼັງຈາກນັ້ນ [[.ch.]] ເປັນການສະແດງອອກເປັນປົກກະຕິ
ທີ່ກົງກັບອົງປະກອບການລວບລວມນີ້, ໃນຂະນະທີ່ [ຊ] ແມ່ນການສະແດງອອກເປັນປົກກະຕິ
ກົງກັນ c or h.
ຫ້ອງຮຽນທຽບເທົ່າ
ຫ້ອງຮຽນທຽບເທົ່າແມ່ນຊື່ສະເພາະທ້ອງຖິ່ນສຳລັບລາຍຊື່ຕົວອັກສອນທີ່ເປັນ
ທຽບເທົ່າ. ຊື່ແມ່ນຕິດຢູ່ໃນ [= ແລະ =]. ຕົວຢ່າງ, ຊື່ e ອາດຈະ
ໃຊ້ເພື່ອເປັນຕົວແທນຂອງ "e," "'," ແລະ "`." ໃນກໍລະນີນີ້, [=e=]] ແມ່ນປົກກະຕິ
ການສະແດງອອກທີ່ກົງກັບອັນໃດນຶ່ງຂອງ e, e, ຫຼື e`.
ຄຸນສົມບັດເຫຼົ່ານີ້ແມ່ນມີຄ່າຫຼາຍຢູ່ໃນທ້ອງຖິ່ນທີ່ບໍ່ແມ່ນພາສາອັງກິດ. ຫນ້າທີ່ຫ້ອງສະຫມຸດ
ທີ່ ແກວ ໃຊ້ສໍາລັບການຈັບຄູ່ການສະແດງອອກປົກກະຕິໃນປັດຈຸບັນຮັບຮູ້ພຽງແຕ່ຕົວອັກສອນ POSIX
ຫ້ອງຮຽນ; ເຂົາເຈົ້າບໍ່ຮັບຮູ້ສັນຍາລັກລວມກັນ ຫຼືຫ້ອງຮຽນທຽບເທົ່າ.
ໄດ້ \y, \B, \<, \>, \s, \S, \w, \W, \`, ແລະ \' ຜູ້ປະກອບການແມ່ນສະເພາະກັບ ແກວ; ພວກເຂົາແມ່ນ
ການຂະຫຍາຍໂດຍອີງໃສ່ສິ່ງອໍານວຍຄວາມສະດວກໃນຫ້ອງສະຫມຸດການສະແດງອອກປົກກະຕິ GNU.
ຕົວເລືອກເສັ້ນຄໍາສັ່ງຕ່າງໆຄວບຄຸມວິທີການ ແກວ ຕີຄວາມໝາຍລັກສະນະປົກກະຕິ
ສຳ ນວນ.
ບໍ່ມີທາງເລືອກ
ໃນກໍລະນີເລີ່ມຕົ້ນ, ແກວ ສະຫນອງສິ່ງອໍານວຍຄວາມສະດວກທັງຫມົດຂອງ POSIX ປົກກະຕິ
ແລະຕົວປະຕິບັດການສະແດງອອກປົກກະຕິຂອງ GNU ທີ່ອະທິບາຍຂ້າງເທິງ.
--posix
ມີພຽງແຕ່ການສະແດງອອກປົກກະຕິ POSIX ເທົ່ານັ້ນທີ່ໄດ້ຮັບການສະຫນັບສະຫນູນ, ຕົວປະຕິບັດການ GNU ແມ່ນບໍ່ພິເສດ.
(ຕົວຢ່າງ: \w ກົງກັບຕົວໜັງສື w).
-- ແບບດັ້ງເດີມ
UNIX ແບບດັ້ງເດີມ ງຸ່ມ ການສະແດງອອກປົກກະຕິແມ່ນກົງກັນ. ຜູ້ປະກອບການ GNU ບໍ່ແມ່ນ
ພິເສດ, ແລະການສະແດງອອກໄລຍະຫ່າງແມ່ນບໍ່ມີ. ຕົວອັກສອນອະທິບາຍດ້ວຍເລກແປດ
ແລະລໍາດັບການຫລົບຫນີເລກຖານສິບຫົກຖືກປະຕິບັດຕາມຕົວອັກສອນ, ເຖິງແມ່ນວ່າພວກມັນເປັນຕົວແທນ
metacharacters ການສະແດງອອກປົກກະຕິ.
-- ໄລຍະຫ່າງໃໝ່
ອະນຸຍາດໃຫ້ລະຫວ່າງການສະແດງອອກໃນການສະແດງອອກປົກກະຕິ, ເຖິງແມ່ນວ່າ -- ແບບດັ້ງເດີມ ໄດ້
ສະຫນອງໃຫ້.
ການກະທໍາ
ຄໍາຖະແຫຼງການປະຕິບັດແມ່ນໄດ້ປິດລ້ອມໃນວົງເລັບ, { ແລະ }. ຄໍາຖະແຫຼງການປະຕິບັດງານປະກອບດ້ວຍປົກກະຕິ
ການມອບໝາຍ, ເງື່ອນໄຂ, ແລະຄໍາຖະແຫຼງການ looping ພົບເຫັນຢູ່ໃນພາສາສ່ວນໃຫຍ່. ຜູ້ປະຕິບັດການ,
ຖະແຫຼງການຄວບຄຸມ, ແລະຖະແຫຼງການຂາເຂົ້າ/ຜົນອອກທີ່ມີຢູ່ແມ່ນມີຮູບແບບຫຼັງຈາກຢູ່ໃນ C.
ຜູ້ປະກອບການ
ຕົວປະຕິບັດການໃນ AWK, ໃນຄໍາສັ່ງຂອງການຫຼຸດລົງກ່ອນຫນ້າ, ແມ່ນ:
(...) ການຈັດກຸ່ມ
$ ການອ້າງອີງພາກສະຫນາມ.
++ -- ເພີ່ມຂຶ້ນ ແລະຫຼຸດລົງ, ທັງຄໍານໍາໜ້າ ແລະຫຼັງ.
^ ເລກກຳລັງ (** ອາດຈະຖືກນໍາໃຊ້, ແລະ **= ສໍາລັບຜູ້ປະຕິບັດການມອບຫມາຍ).
+ - ! ບວກ Unary, unary minus, ແລະການປະຕິເສດຢ່າງມີເຫດຜົນ.
* / % ການຄູນ, ການຫານ, ແລະໂມດູລ.
+ - ການເພີ່ມແລະການຫັກລົບ.
ຊ່ອງ ການເຊື່ອມສະຕຣິງ.
| |& ທໍ່ I/O ສໍາລັບ ສາຍ, ພິມ, ແລະ printf.
< > <= >= != ==
ຜູ້ປະຕິບັດການທີ່ກ່ຽວຂ້ອງປົກກະຕິ.
~ !~ ການຈັບຄູ່ການສະແດງອອກປົກກະຕິ, ການຈັບຄູ່ລົບ. ຫມາຍເຫດ: ຢ່າໃຊ້ແບບຄົງທີ່
ການສະແດງອອກ (/foo/) ຢູ່ເບື້ອງຊ້າຍມືຂອງ a ~ or !~. ພຽງແຕ່ນໍາໃຊ້ຫນຶ່ງໃນ
ເບື້ອງຂວາ. ການສະແດງອອກ /foo/ ~ exp ມີຄວາມຫມາຍດຽວກັນກັບ (($0 ~
/foo/) ~ exp). ນີ້ແມ່ນປົກກະຕິແລ້ວ ບໍ່ ສິ່ງທີ່ທ່ານຕ້ອງການ.
in ສະມາຊິກອາເຣ.
&& ເຫດຜົນ AND.
|| ເຫດຜົນ OR.
?: ການສະແດງອອກຕາມເງື່ອນໄຂ C. ນີ້ມີແບບຟອມ expr1 ? expr2 : expr3ທີ່ຢູ່ ຖ້າຫາກວ່າ
expr1 ແມ່ນຄວາມຈິງ, ມູນຄ່າຂອງການສະແດງຜົນແມ່ນ expr2, ຖ້າບໍ່ດັ່ງນັ້ນມັນແມ່ນ expr3.
ພຽງແຕ່ຫນຶ່ງຂອງ expr2 ແລະ expr3 ຖືກປະເມີນ.
= += -= *= /= %= ^=
ການມອບໝາຍ. ທັງການມອບຫມາຍຢ່າງແທ້ຈິງ (var = ມູນຄ່າ) ແລະການມອບຫມາຍຜູ້ປະຕິບັດການ
(ຮູບແບບອື່ນໆ) ໄດ້ຮັບການສະຫນັບສະຫນູນ.
ການຄວບຄຸມ ບົດລາຍງານ
ຖະແຫຼງການການຄວບຄຸມມີດັ່ງນີ້:
if (ສະພາບ) ຄໍາຖະແຫຼງທີ່ [ ອື່ນ ຄໍາຖະແຫຼງທີ່ ]
ໃນຂະນະທີ່ (ສະພາບ) ຄໍາຖະແຫຼງທີ່
do ຄໍາຖະແຫຼງທີ່ ໃນຂະນະທີ່ (ສະພາບ)
ສໍາລັບການ (expr1; expr2; expr3) ຄໍາຖະແຫຼງທີ່
ສໍາລັບການ (var in array) ຄໍາຖະແຫຼງທີ່
ພັກຜ່ອນ
ດໍາເນີນການຕໍ່
ລຶບ array[ດັດຊະນີ]
ລຶບ array
ການທ່ອງທ່ຽວ [ ການສະແດງອອກ ]
{ ບົດລາຍງານ }
ສະຫຼັບ (ການສະແດງອອກ) {
ກໍລະນີ ມູນຄ່າ|regex : ຄໍາຖະແຫຼງທີ່
...
[ default: ຄໍາຖະແຫຼງທີ່ ]
}
ຂ້າພະເຈົ້າ / O ບົດລາຍງານ
ຖະແຫຼງການປ້ອນ/ອອກມີດັ່ງນີ້:
ປິດ(ເອກະສານ [, ວິທີການ]) ປິດໄຟລ໌, ທໍ່ຫຼືຂະບວນການຮ່ວມກັນ. ທາງເລືອກ ວິທີການ ຄວນຈະເປັນເທົ່ານັ້ນ
ໃຊ້ໃນເວລາທີ່ປິດຫນຶ່ງປາຍຂອງທໍ່ສອງທາງກັບຂະບວນການຮ່ວມກັນ. ມັນ
ຕ້ອງເປັນຄ່າສະຕຣິງ, ບໍ່ວ່າຈະ "ເຖິງ" or "ຈາກ".
ສາຍ ທີ່ກໍານົດໄວ້ $0 ຈາກບັນທຶກການປ້ອນຂໍ້ມູນຕໍ່ໄປ; ຕັ້ງ NF, NR, FNR, RT.
ສາຍ <ເອກະສານ ທີ່ກໍານົດໄວ້ $0 ຈາກບັນທຶກຕໍ່ໄປຂອງ ເອກະສານ; ຕັ້ງ NF, RT.
ສາຍ var ທີ່ກໍານົດໄວ້ var ຈາກບັນທຶກການປ້ອນຂໍ້ມູນຕໍ່ໄປ; ຕັ້ງ NR, FNR, RT.
ສາຍ var <ເອກະສານ ທີ່ກໍານົດໄວ້ var ຈາກບັນທຶກຕໍ່ໄປຂອງ ເອກະສານ, RT.
ຄໍາສັ່ງ | ສາຍ [var]
ການດໍາເນີນງານ ຄໍາສັ່ງ piping ຜົນຜະລິດບໍ່ວ່າຈະເຂົ້າໄປໃນ $0 or var, ດັ່ງຂ້າງເທິງ, ແລະ
RT.
ຄໍາສັ່ງ |& ສາຍ [var]
ການດໍາເນີນງານ ຄໍາສັ່ງ ເປັນຂະບວນການຮ່ວມກັນທໍ່ຜົນຜະລິດບໍ່ວ່າຈະເຂົ້າໄປໃນ $0 or var,
ດັ່ງຂ້າງເທິງ, ແລະ RT. ຂະບວນການຮ່ວມແມ່ນ ກ ແກວ ການຂະຫຍາຍ. (ຄໍາສັ່ງ ສາມາດເຮັດໄດ້
ຍັງເປັນເຕົ້າຮັບ. ເບິ່ງພາກຍ່ອຍ ພິເສດ ເອກະສານ ຊື່, ຂ້າງລຸ່ມນີ້.)
ຕໍ່ໄປ ຢຸດການປະມວນຜົນບັນທຶກການປ້ອນຂໍ້ມູນປະຈຸບັນ. ບັນທຶກການປ້ອນຂໍ້ມູນຕໍ່ໄປແມ່ນ
ການອ່ານແລະການປຸງແຕ່ງເລີ່ມຕົ້ນດ້ວຍຮູບແບບທໍາອິດໃນ AWK
ໂຄງການ. ເມື່ອເຖິງຈຸດສິ້ນສຸດຂອງການປ້ອນຂໍ້ມູນ, ແກວ ປະຕິບັດໃດໆ
END ກົດລະບຽບ
ໄຟລ໌ຕໍ່ໄປ ຢຸດການປະມວນຜົນໄຟລ໌ປ້ອນຂໍ້ມູນປະຈຸບັນ. ບັນທຶກການປ້ອນຂໍ້ມູນຕໍ່ໄປອ່ານ
ມາຈາກໄຟລ໌ປ້ອນຂໍ້ມູນຕໍ່ໄປ. ຊື່ເອກະສານ ແລະ ARGIND ມີການປັບປຸງ,
FNR ຖືກຣີເຊັດເປັນ 1, ແລະການປະມວນຜົນຈະເລີ່ມໃໝ່ດ້ວຍຮູບແບບທຳອິດ
ໃນໂຄງການ AWK. ເມື່ອເຖິງຈຸດສິ້ນສຸດຂອງການປ້ອນຂໍ້ມູນ, ແກວ
ປະຕິບັດໃດໆ END ກົດລະບຽບ
ພິມ ພິມບັນທຶກປັດຈຸບັນ. ບັນທຶກຜົນຜະລິດໄດ້ສິ້ນສຸດລົງດ້ວຍ
ມູນຄ່າຂອງ ORS.
ພິມ expr-ບັນຊີລາຍຊື່ ພິມສຳນວນ. ແຕ່ລະສະແດງອອກແມ່ນແຍກໂດຍມູນຄ່າຂອງ
FSO. ບັນທຶກຜົນຜະລິດແມ່ນສິ້ນສຸດລົງດ້ວຍມູນຄ່າຂອງ ORS.
ພິມ expr-ບັນຊີລາຍຊື່ >ເອກະສານ ພິມສຳນວນໃສ່ ເອກະສານ. ແຕ່ລະສະແດງອອກແມ່ນແຍກອອກໂດຍ
ມູນຄ່າຂອງ FSO. ບັນທຶກຜົນຜະລິດແມ່ນສິ້ນສຸດລົງດ້ວຍມູນຄ່າຂອງ
ORS.
printf fmt, expr-ບັນຊີລາຍຊື່ ຮູບແບບແລະພິມ. ເບິ່ງ ໄດ້ printf ຖະແຫຼງການ, ຂ້າງລຸ່ມນີ້.
printf fmt, expr-ບັນຊີລາຍຊື່ >ເອກະສານ
ຮູບແບບແລະພິມ ເອກະສານ.
ລະບົບ(cmd-line) ປະຕິບັດຄໍາສັ່ງ cmd-line, ແລະກັບຄືນສະຖານະພາບທາງອອກ. (ນີ້ອາດຈະ
ບໍ່ມີຢູ່ໃນລະບົບທີ່ບໍ່ແມ່ນ POSIX.)
ຟlush([ເອກະສານ]) Flush buffers ໃດໆທີ່ກ່ຽວຂ້ອງກັບໄຟລ໌ຜົນຜະລິດເປີດຫຼືທໍ່ ເອກະສານ.
If ເອກະສານ ຫາຍໄປຫຼືຖ້າມັນເປັນສະຕຣິງ null, ຫຼັງຈາກນັ້ນ flush ເປີດທັງຫມົດ
ໄຟລ໌ຜົນຜະລິດແລະທໍ່.
ການປ່ຽນເສັ້ນທາງຜົນຜະລິດເພີ່ມເຕີມແມ່ນອະນຸຍາດໃຫ້ສໍາລັບ ພິມ ແລະ printf.
ພິມ ... >> ເອກະສານ
ຕື່ມຂໍ້ມູນໃສ່ກັບ ເອກະສານ.
ພິມ ... | ຄໍາສັ່ງ
ຂຽນໃສ່ທໍ່.
ພິມ ... |& ຄໍາສັ່ງ
ສົ່ງຂໍ້ມູນໄປຍັງຂະບວນການຮ່ວມ ຫຼືຊັອກເກັດ. (ເບິ່ງພາກສ່ວນຍ່ອຍ ພິເສດ ເອກະສານ ຊື່,
ດ້ານລຸ່ມ.)
ໄດ້ ສາຍ ຄໍາສັ່ງສົ່ງຄືນ 1 ໃນຄວາມສໍາເລັດ, 0 ໃນຕອນທ້າຍຂອງໄຟລ໌, ແລະ -1 ໃນຄວາມຜິດພາດ. ເມື່ອ
ຄວາມຜິດພາດ, ERRNO ຖືກຕັ້ງເປັນສະຕຣິງທີ່ອະທິບາຍບັນຫາ.
ຫມາຍເຫດ: ຄວາມລົ້ມເຫຼວໃນການເປີດ socket ສອງທາງສົ່ງຜົນໃຫ້ເກີດຄວາມຜິດພາດທີ່ບໍ່ເປັນອັນຕະລາຍຖືກສົ່ງກັບໄປ.
ຟັງຊັນການໂທ. ຖ້າຫາກວ່າການນໍາໃຊ້ທໍ່, ການຮ່ວມມື, ຫຼືເຕົ້າຮັບເພື່ອ ສາຍ, ຫຼືຈາກ ພິມ or
printf ພາຍໃນ loop, ທ່ານ ຕ້ອງ ການນໍາໃຊ້ ປິດ () ເພື່ອສ້າງຕົວຢ່າງໃຫມ່ຂອງຄໍາສັ່ງຫຼື
ເຕົ້າຮັບ. AWK ບໍ່ໄດ້ປິດທໍ່, ເຕົ້າຮັບ, ຫຼືຂະບວນການຮ່ວມກັນໂດຍອັດຕະໂນມັດເມື່ອພວກມັນກັບຄືນມາ
EOF.
ໄດ້ printf ຖະແຫຼງການ
ລຸ້ນ AWK ຂອງ printf ຖະແຫຼງການ ແລະ sprintf() function (ເບິ່ງຂ້າງລຸ່ມນີ້) ຍອມຮັບ
ຕໍ່ໄປນີ້ຮູບແບບສະເພາະການປ່ຽນແປງ:
%c ລັກສະນະດຽວ. ຖ້າການໂຕ້ຖຽງທີ່ໃຊ້ສໍາລັບ %c ເປັນຕົວເລກ, ມັນຖືກປະຕິບັດເປັນ
ຕົວອັກສອນແລະພິມ. ຖ້າບໍ່ດັ່ງນັ້ນ, ການໂຕ້ຖຽງແມ່ນສົມມຸດວ່າເປັນ string, ແລະ
ພິມຕົວອັກສອນທຳອິດຂອງສະຕຣິງນັ້ນເທົ່ານັ້ນ.
%d, %i ຈຳນວນທົດສະນິຍົມ (ສ່ວນຈຳນວນເຕັມ).
%e, %E ຕົວເລກຈຸດລອຍຂອງແບບຟອມ [-]d.dddddde[+-]dd. ໄດ້ %E ການນໍາໃຊ້ຮູບແບບ E
ແທນທີ່ e.
%f, %F ຕົວເລກຈຸດລອຍຂອງແບບຟອມ [-]ddd.dddddd. ຖ້າຫ້ອງສະຫມຸດລະບົບສະຫນັບສະຫນູນ
ມັນ, %F ສາມາດໃຊ້ໄດ້ເຊັ່ນດຽວກັນ. ນີ້ແມ່ນຄ້າຍຄື %f, ແຕ່ໃຊ້ຕົວພິມໃຫຍ່ສໍາລັບການພິເສດ
"ບໍ່ແມ່ນຕົວເລກ" ແລະ "ບໍ່ມີຂອບເຂດ". ຖ້າ %F ບໍ່ສາມາດໃຊ້ໄດ້, ແກວ ການນໍາໃຊ້ %f.
%g, %G ການນໍາໃຊ້ %e or %f ການປ່ຽນໃຈເຫລື້ອມໃສ, ອັນໃດທີ່ສັ້ນກວ່າ, ໂດຍມີສູນທີ່ບໍ່ສຳຄັນ
ສະກັດກັ້ນ. ໄດ້ %G ການນໍາໃຊ້ຮູບແບບ %E ແທນທີ່ %e.
%o ເລກຖານແປດທີ່ບໍ່ໄດ້ເຊັນ (ຍັງເປັນຈຳນວນເຕັມ).
%u ຈຳນວນທົດສະນິຍົມທີ່ບໍ່ໄດ້ເຊັນ (ອີກເທື່ອໜຶ່ງ, ຈຳນວນເຕັມ).
%s ສະຕຣິງຕົວອັກສອນ.
%x, %X ເລກຖານສິບຫົກທີ່ບໍ່ໄດ້ເຊັນ (ເປັນຈໍານວນເຕັມ). ໄດ້ %X ການນໍາໃຊ້ຮູບແບບ ABCDEF ແທນທີ່
abcdef.
%% ດຽວ % ລັກສະນະ; ບໍ່ມີການໂຕ້ຖຽງຖືກແປງ.
ທາງເລືອກ, ຕົວກໍານົດການເພີ່ມເຕີມອາດຈະນອນຢູ່ລະຫວ່າງ % ແລະຈົດຫມາຍສະບັບຄວບຄຸມ:
ນັບ$ ການນໍາໃຊ້ ນັບ'th argument ໃນຈຸດນີ້ໃນຮູບແບບ. ອັນນີ້ເອີ້ນວ່າ ກ
ຕຳ ແໜ່ງ ຕົວລະບຸ ແລະມີຈຸດປະສົງຕົ້ນຕໍສໍາລັບການນໍາໃຊ້ໃນສະບັບແປຂອງ
ຮູບແບບສະຕຣິງ, ບໍ່ແມ່ນຢູ່ໃນຂໍ້ຄວາມຕົ້ນສະບັບຂອງໂປຣແກຣມ AWK. ມັນເປັນ ແກວ
ການຂະຫຍາຍ.
- ການສະແດງອອກຄວນຈະຖືກປະໄວ້ໃຫ້ຖືກຕ້ອງພາຍໃນພາກສະຫນາມຂອງມັນ.
ຊ່ອງ ສຳລັບການແປງຕົວເລກ, ໃຫ້ຄຳນຳໜ້າຄ່າບວກດ້ວຍຍະຫວ່າງ, ແລະຄ່າລົບ
ດ້ວຍເຄື່ອງໝາຍລົບ.
+ ເຄື່ອງໝາຍບວກ, ໃຊ້ກ່ອນຕົວປັບຄວາມກວ້າງ (ເບິ່ງຂ້າງລຸ່ມນີ້), ບອກວ່າຈະສະໜອງ a
ເຊັນສໍາລັບການແປງຕົວເລກ, ເຖິງແມ່ນວ່າຂໍ້ມູນທີ່ຈະຈັດຮູບແບບເປັນບວກ. ໄດ້ +
overrides ຕົວແກ້ໄຂພື້ນທີ່.
# ໃຊ້ "ແບບຟອມສະຫຼັບ" ສໍາລັບຕົວອັກສອນຄວບຄຸມທີ່ແນ່ນອນ. ສໍາລັບ %o, ສະຫນອງການນໍາ
ສູນ. ສໍາລັບ %x, ແລະ %X, ສະຫນອງການນໍາ 0x or 0X ສໍາລັບຜົນໄດ້ຮັບທີ່ບໍ່ແມ່ນສູນ. ສໍາລັບ %e, %E,
%f ແລະ %F, ຜົນໄດ້ຮັບມີຈຸດທົດສະນິຍົມສະເໝີ. ສໍາລັບ %g, ແລະ %G, ຕິດຕາມ
ສູນບໍ່ໄດ້ຖືກໂຍກຍ້າຍອອກຈາກຜົນໄດ້ຮັບ.
0 ເປັນຜູ້ ນຳ 0 (ສູນ) ເຮັດຫນ້າທີ່ເປັນທຸງ, ທີ່ຊີ້ໃຫ້ເຫັນຜົນຜະລິດຄວນໄດ້ຮັບການ padded ກັບ
ສູນແທນຊ່ອງຫວ່າງ. ນີ້ໃຊ້ກັບຮູບແບບຜົນຜະລິດຕົວເລກເທົ່ານັ້ນ. ນີ້
ທຸງມີຜົນພຽງແຕ່ເມື່ອຄວາມກວ້າງຂອງຊ່ອງຂໍ້ມູນກວ້າງກວ່າຄ່າທີ່ຈະພິມ.
' ຕົວອັກສອນຄໍາແນະນໍາຫນຶ່ງ ແກວ ເພື່ອໃສ່ຕົວແຍກນັບພັນຂອງສະຖານທີ່
ຕົວອັກສອນເປັນຕົວເລກທົດສະນິຍົມ, ແລະຍັງໃຊ້ຈຸດທົດສະນິຍົມຂອງທ້ອງຖິ່ນ
ຕົວອັກສອນທີ່ມີຮູບແບບຈຸດລອຍ. ອັນນີ້ຮຽກຮ້ອງໃຫ້ມີການສະຫນັບສະຫນູນທ້ອງຖິ່ນທີ່ຖືກຕ້ອງໃນ
ຫ້ອງສະຫມຸດ C ແລະໃນຄໍານິຍາມຂອງທ້ອງຖິ່ນໃນປະຈຸບັນ.
width ຊ່ອງຂໍ້ມູນຄວນຈະຖືກ padded ກັບຄວາມກວ້າງນີ້. ພາກສະຫນາມແມ່ນປົກກະຕິ padded ກັບ
ຍະຫວ່າງ. ກັບ 0 ທຸງ, ມັນແມ່ນ padded ກັບສູນ.
.ກ່ອນໜ້າ ຕົວເລກທີ່ລະບຸຄວາມຊັດເຈນທີ່ຈະໃຊ້ໃນເວລາພິມ. ສໍາລັບ %e, %E, %f ແລະ
%F, ຮູບແບບ, ນີ້ກໍານົດຈໍານວນຕົວເລກທີ່ທ່ານຕ້ອງການທີ່ຈະພິມໄປທາງຂວາຂອງ
ຈຸດທົດສະນິຍົມ. ສໍາລັບ %g, ແລະ %G ຮູບແບບ, ມັນກໍານົດຈໍານວນສູງສຸດຂອງ
ຕົວເລກທີ່ສໍາຄັນ. ສໍາລັບ %d, %i, %o, %u, %x, ແລະ %X ຮູບແບບ, ມັນກໍານົດ
ຈໍານວນຕົວເລກຕໍາ່ສຸດທີ່ຈະພິມ. ສໍາລັບ %s, ມັນກໍານົດຈໍານວນສູງສຸດຂອງ
ຕົວອັກສອນຈາກສະຕຣິງທີ່ຄວນພິມ.
ການເຄື່ອນໄຫວ width ແລະ ກ່ອນໜ້າ ຄວາມສາມາດຂອງ ISO C printf() ປົກກະຕິແມ່ນສະຫນັບສະຫນູນ. ກ *
ແທນທີ່ width or ກ່ອນໜ້າ ຂໍ້ມູນສະເພາະເຮັດໃຫ້ຄຸນຄ່າຂອງພວກມັນຖືກເອົາມາຈາກ
ບັນຊີລາຍຊື່ການໂຕ້ຖຽງກັບ printf or sprintf(). ເພື່ອໃຊ້ຕົວລະບຸຕຳແໜ່ງທີ່ມີໄດນາມິກ
width ຫຼືຄວາມແມ່ນຍໍາ, ສະຫນອງການ ນັບ$ ຫຼັງຈາກ * ໃນຮູບແບບສະຕຣິງ. ຍົກຕົວຢ່າງ,
"%3$*2$.*1$s".
ພິເສດ ເອກະສານ ຊື່
ເມື່ອເຮັດການປ່ຽນເສັ້ນທາງ I/O ຈາກອັນໃດນຶ່ງ ພິມ or printf ເຂົ້າໄປໃນໄຟລ໌, ຫຼືຜ່ານ ສາຍ ຈາກ
ແຟ້ມ, ແກວ ຮັບຮູ້ຊື່ໄຟລ໌ພິເສດສະເພາະພາຍໃນ. ຊື່ໄຟລ໌ເຫຼົ່ານີ້ອະນຸຍາດໃຫ້ເຂົ້າເຖິງ
ເພື່ອເປີດຕົວອະທິບາຍໄຟລ໌ທີ່ສືບທອດມາຈາກ ແກວຂະບວນການແມ່ຂອງ (ປົກກະຕິແລ້ວແກະ). ເຫຼົ່ານີ້
ຊື່ໄຟລ໌ອາດຈະຖືກໃຊ້ໃນແຖວຄໍາສັ່ງເພື່ອຕັ້ງຊື່ໄຟລ໌ຂໍ້ມູນ. ຊື່ໄຟລ໌ແມ່ນ:
- ວັດສະດຸປ້ອນມາດຕະຖານ.
/dev/stdin ວັດສະດຸປ້ອນມາດຕະຖານ.
/dev/stdout ຜົນຜະລິດມາດຕະຖານ.
/dev/stderr ຜົນໄດ້ຮັບຄວາມຜິດພາດມາດຕະຖານ.
/dev/fd/n ໄຟລ໌ທີ່ເຊື່ອມໂຍງກັບຕົວອະທິບາຍໄຟລ໌ເປີດ n.
ເຫຼົ່ານີ້ແມ່ນເປັນປະໂຫຍດໂດຍສະເພາະສໍາລັບຂໍ້ຄວາມຄວາມຜິດພາດ. ຍົກຕົວຢ່າງ:
ພິມ “ ເຈົ້າ ຟັນ ມັນ!" > "/dev/stderr"
ໃນຂະນະທີ່ຖ້າບໍ່ດັ່ງນັ້ນທ່ານຈະຕ້ອງໃຊ້
ພິມ “ ເຈົ້າ ຟັນ ມັນ!" | "ແມວ 1>&2"
ຊື່ໄຟລ໌ພິເສດຕໍ່ໄປນີ້ອາດຈະຖືກນໍາໃຊ້ກັບ |& ຜູ້ປະຕິບັດຂະບວນການຮ່ວມກັນສໍາລັບການສ້າງ
ການເຊື່ອມຕໍ່ເຄືອຂ່າຍ TCP/IP:
/inet/tcp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
/inet4/tcp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
/inet6/tcp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
ໄຟລ໌ສໍາລັບການເຊື່ອມຕໍ່ TCP/IP ໃນພອດທ້ອງຖິ່ນ ທ່າເຮືອ ກັບເຈົ້າພາບທາງໄກ ຣອດ ຢູ່ທາງໄກ
port ລາຍງານ. ໃຊ້ພອດຂອງ 0 ເພື່ອໃຫ້ລະບົບເລືອກພອດ. ໃຊ້ /inet4 ບັງຄັບ
ການເຊື່ອມຕໍ່ IPv4, ແລະ /inet6 ເພື່ອບັງຄັບການເຊື່ອມຕໍ່ IPv6. ທຳມະດາ /inet ໃຊ້ໄດ້
ຄ່າເລີ່ມຕົ້ນຂອງລະບົບ (ສ່ວນຫຼາຍອາດຈະເປັນ IPv4).
/inet/udp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
/inet4/udp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
/inet6/udp/ທ່າເຮືອ/ຣອດ/ລາຍງານ
ຄ້າຍຄືກັນ, ແຕ່ໃຊ້ UDP/IP ແທນ TCP/IP.
Numeric ຫນ້າທີ່
AWK ມີຟັງຊັນເລກຄະນິດໃນຕົວຕໍ່ໄປນີ້:
atan2(y, x) ກັບຄືນ Arctangent ຂອງ y / x ໃນເຣດຽນ.
cos(ຕົວຢ່າງ) ສົ່ງຄືນ cosine ຂອງ ຕົວຢ່າງ, ເຊິ່ງຢູ່ໃນເຣດຽນ.
exp(ຕົວຢ່າງ) ຟັງຊັນເລກກຳລັງ.
int(ຕົວຢ່າງ) ຕັດເປັນຈຳນວນເຕັມ.
ບັນທຶກ(ຕົວຢ່າງ) ການທໍາງານຂອງ logarithm ທໍາມະຊາດ.
ແຣນ() ສົ່ງຄືນຕົວເລກແບບສຸ່ມ N, ລະຫວ່າງ 0 ແລະ 1, ເຊັ່ນວ່າ 0 ≤ N <1.
ບາບຕົວຢ່າງ) ກັບຄືນ sine ຂອງ ຕົວຢ່າງ, ເຊິ່ງຢູ່ໃນເຣດຽນ.
sqrt(ຕົວຢ່າງ) ກັບຄືນຮາກທີ່ສອງຂອງ ຕົວຢ່າງ.
ແຊນ([ຕົວຢ່າງ]) ການນໍາໃຊ້ ຕົວຢ່າງ ເປັນແກ່ນໃຫມ່ສໍາລັບເຄື່ອງກໍາເນີດຕົວເລກແບບສຸ່ມ. ຖ້າບໍ່ມີ ຕົວຢ່າງ is
ສະຫນອງໃຫ້, ໃຊ້ເວລາຂອງມື້. ສົ່ງຄືນເມັດກ່ອນໜ້າສຳລັບການສຸ່ມ
ເຄື່ອງກໍາເນີດເລກ.
string ຫນ້າທີ່
ແກວ ມີຟັງຊັນສະຕຣິງໃນຕົວຕໍ່ໄປນີ້:
ຊະນິດ(s [, d [, ວິທີການ] ]) ຕອບຈໍານວນອົງປະກອບໃນ array ແຫຼ່ງ s. ຄັດ
ເນື້ອໃນຂອງ s ການນໍາໃຊ້ ແກວກົດລະບຽບປົກກະຕິຂອງການປຽບທຽບຄ່າ, ແລະ
ແທນທີ່ຕົວຊີ້ວັດຂອງຄ່າຈັດຮຽງ s ມີລໍາດັບ
ຈຳນວນເຕັມທີ່ເລີ່ມຕົ້ນດ້ວຍ 1. ຖ້າເປັນທາງເລືອກ array ຈຸດໝາຍປາຍທາງ d is
ລະບຸ, ຊ້ໍາກັນຄັ້ງທໍາອິດ s ເຂົ້າໄປໃນ d, ແລະຫຼັງຈາກນັ້ນຈັດລຽງ d, ອອກຈາກ
ຕົວຊີ້ວັດຂອງ array ແຫຼ່ງ s ບໍ່ປ່ຽນແປງ. ສະຕຣິງທາງເລືອກ ວິທີການ
ຄວບຄຸມທິດທາງແລະຮູບແບບການປຽບທຽບ. ຄ່າທີ່ຖືກຕ້ອງສໍາລັບ
ວິທີການ ແມ່ນສາຍໃດນຶ່ງທີ່ຖືກຕ້ອງ PROCINFO["sorted_in"]ທີ່ຢູ່ ມັນ
ຍັງສາມາດເປັນຊື່ຂອງຫນ້າທີ່ການປຽບທຽບທີ່ກໍານົດໂດຍຜູ້ໃຊ້ເປັນ
ອະທິບາຍໃນ PROCINFO["sorted_in"].
ປະເພດ (s [, d [, ວິທີການ] ])
ຕອບຈໍານວນອົງປະກອບໃນ array ແຫຼ່ງ s. ພຶດຕິກຳ
ແມ່ນຄືກັນກັບຂອງ ຊະນິດ(), ຍົກເວັ້ນວ່າອາເຣ ດັດສະນີ ມີ
ໃຊ້ສໍາລັບການຈັດຮຽງ, ບໍ່ແມ່ນຄ່າ array. ເມື່ອເຮັດແລ້ວ, array ແມ່ນ
ຖືກດັດສະນີເປັນຕົວເລກ, ແລະຄ່າແມ່ນຂອງຕົ້ນສະບັບ
ດັດຊະນີ. ຄຸນຄ່າຕົ້ນສະບັບສູນເສຍໄປ; ດັ່ງນັ້ນຈຶ່ງໃຫ້ວິນາທີ
array ຖ້າທ່ານຕ້ອງການຮັກສາຕົ້ນສະບັບ. ຈຸດປະສົງຂອງ
ສະຕຣິງທາງເລືອກ ວິທີການ ແມ່ນຄືກັນກັບທີ່ໄດ້ອະທິບາຍໄວ້ໃນ ຊະນິດ() ຂ້າງເທິງ.
gensub(r, s, h [, t]) ຄົ້ນຫາສາຍເປົ້າໝາຍ t ສໍາລັບການຈັບຄູ່ຂອງການສະແດງອອກປົກກະຕິ
rທີ່ຢູ່ ຖ້າຫາກວ່າ h ແມ່ນສາຍທີ່ເລີ່ມຕົ້ນດ້ວຍ g or G, ຈາກນັ້ນປ່ຽນແທນທັງໝົດ
ການແຂ່ງຂັນຂອງ r ກັບ s. ຖ້າບໍ່ດັ່ງນັ້ນ, h ແມ່ນຕົວເລກທີ່ຊີ້ບອກ
ການແຂ່ງຂັນຂອງ r ເພື່ອທົດແທນການ. ຖ້າ t ບໍ່ໄດ້ສະຫນອງ, ການນໍາໃຊ້ $0 ແທນທີ່ຈະເປັນ.
ພາຍໃນຂໍ້ຄວາມປ່ຽນແທນ s, ລໍາດັບ \n, ບ່ອນທີ່ n ເປັນຕົວເລກ
ຈາກ 1 ຫາ 9, ອາດຈະຖືກນໍາໃຊ້ເພື່ອຊີ້ບອກພຽງແຕ່ຂໍ້ຄວາມທີ່ກົງກັນ
ໄດ້ nth ຫຍໍ້ຫນ້າຍ່ອຍວົງເລັບ. ລໍາດັບ \0 ສະແດງໃຫ້ເຫັນ
ຂໍ້ຄວາມທີ່ກົງກັນທັງຫມົດ, ເຊັ່ນດຽວກັນກັບຕົວອັກສອນ &. ບໍ່ມັກ ຍ່ອຍ()
ແລະ gsub(), ສະຕຣິງດັດແກ້ຖືກສົ່ງຄືນເປັນຜົນມາຈາກ
function, ແລະ string ເປົ້າຫມາຍຕົ້ນສະບັບແມ່ນ ບໍ່ ປ່ຽນແປງ.
gsub(r, s [, t]) ສໍາລັບແຕ່ລະ substring ກົງກັບ expression ປົກກະຕິ r ໃນສາຍ
t, ທົດແທນ string ໄດ້ s, ແລະກັບຄືນຈໍານວນຂອງ
ການທົດແທນ. ຖ້າ t ບໍ່ໄດ້ສະຫນອງ, ການນໍາໃຊ້ $0. ເປັນ & ໃນ
ຂໍ້ຄວາມແທນທີ່ຈະຖືກແທນທີ່ດ້ວຍຂໍ້ຄວາມທີ່ເປັນຈິງ
ກົງກັນ. ໃຊ້ \& ເພື່ອໃຫ້ໄດ້ຮັບການຮູ້ຫນັງສື &. (ອັນນີ້ຕ້ອງພິມເປັນ
"\\&"1 ເບິ່ງ GAWK: ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ ສໍາລັບການສົນທະນາຢ່າງເຕັມທີ່
ຂອງກົດລະບຽບສໍາລັບການ &'s ແລະ backslashes ໃນຂໍ້ຄວາມທົດແທນຂອງ
ຍ່ອຍ(), gsub(), ແລະ gensub().)
ດັດຊະນີ(s, t) ສົ່ງຄືນດັດຊະນີຂອງສະຕຣິງ t ໃນສາຍ s, ຫຼື 0 ຖ້າ t ບໍ່ແມ່ນ
ປະຈຸບັນ. (ນີ້ຫມາຍຄວາມວ່າຕົວຊີ້ວັດລັກສະນະເລີ່ມຕົ້ນທີ່ຫນຶ່ງ.) ມັນ
ເປັນຄວາມຜິດພາດທີ່ຮ້າຍແຮງທີ່ຈະໃຊ້ຄ່າຄົງທີ່ regexp ສໍາລັບ t.
ຄວາມຍາວ([s]) ສົ່ງຄືນຄວາມຍາວຂອງສະຕຣິງ s, ຫຼືຄວາມຍາວຂອງ $0 if s ບໍ່ແມ່ນ
ສະໜອງໃຫ້. ໃນຖານະເປັນສ່ວນຂະຫຍາຍທີ່ບໍ່ແມ່ນມາດຕະຖານ, ດ້ວຍການໂຕ້ຖຽງ array,
ຄວາມຍາວ() ຕອບຈໍານວນອົງປະກອບໃນ array.
ການແຂ່ງຂັນ(s, r [, a]) ກັບຄືນຕໍາແຫນ່ງໃນ s ບ່ອນທີ່ການສະແດງອອກປົກກະຕິ r ເກີດຂຶ້ນ, ຫຼື
0 ຖ້າ r ບໍ່ແມ່ນປະຈຸບັນ, ແລະກໍານົດຄ່າຂອງ RSTART ແລະ RLENGTH.
ໃຫ້ສັງເກດວ່າຄໍາສັ່ງໂຕ້ຖຽງແມ່ນຄືກັນກັບສໍາລັບ ~ ຜູ້ປະກອບການ:
str ~ re. ຖ້າ array a ແມ່ນສະຫນອງໃຫ້, a ຖືກເກັບກູ້ແລະຫຼັງຈາກນັ້ນອົງປະກອບ
ປີ 1 ຜ່ານ n ແມ່ນເຕັມໄປດ້ວຍສ່ວນຂອງ s ທີ່ກົງກັບ
ການສະແດງອອກຍ່ອຍວົງເລັບທີ່ສອດຄ້ອງກັນໃນ r. ອົງປະກອບທີ 0
of a ປະກອບດ້ວຍສ່ວນຂອງ s ຈັບຄູ່ໂດຍປົກກະຕິທັງຫມົດ
ການສະແດງອອກ r. ຕົວໜັງສືຍ່ອຍ a[n, "ເລີ່ມຕົ້ນ"], ແລະ a[n, "ຄວາມຍາວ"]
ໃຫ້ດັດຊະນີເລີ່ມຕົ້ນໃນ string ແລະຄວາມຍາວຕາມລໍາດັບ,
ຂອງແຕ່ລະສະຕຣິງຍ່ອຍທີ່ກົງກັນ.
patsplit (s, a [, r [, Seps] ])
ແຍກສາຍ s ເຂົ້າໄປໃນ array a ແລະ array ຕົວແຍກ Seps
ກ່ຽວກັບການສະແດງອອກປົກກະຕິ r, ແລະສົ່ງຄືນຈໍານວນຊ່ອງຂໍ້ມູນ.
ຄ່າອົງປະກອບແມ່ນສ່ວນຂອງ s ທີ່ກົງກັນ r. ຄຸນຄ່າຂອງ
Seps[i] ແມ່ນຕົວແຍກທີ່ປາກົດຢູ່ທາງຫນ້າຂອງ a[i+1]ທີ່ຢູ່ ຖ້າຫາກວ່າ r
ຖືກລະເວັ້ນ, ຟຟລ ຖືກນໍາໃຊ້ແທນ. ອາເຣ a ແລະ Seps ມີ
ລ້າງກ່ອນ. ການແບ່ງແຍກປະຕິບັດຕົວດຽວກັນກັບການແບ່ງພາກສະໜາມ
ກັບ ຟຟລ, ອະທິບາຍຂ້າງເທິງ.
ແບ່ງ(s, a [, r [, Seps] ])
ແຍກສາຍ s ເຂົ້າໄປໃນ array a ແລະ array ຕົວແຍກ Seps
ກ່ຽວກັບການສະແດງອອກປົກກະຕິ r, ແລະສົ່ງຄືນຈໍານວນຊ່ອງຂໍ້ມູນ. ຖ້າ
r ຖືກລະເວັ້ນ, FS ຖືກນໍາໃຊ້ແທນ. ອາເຣ a ແລະ Seps ມີ
ລ້າງກ່ອນ. Seps[i] ແມ່ນຕົວແຍກພາກສະຫນາມທີ່ຈັບຄູ່ໂດຍ r
ລະຫວ່າງ a[i] ແລະ a[i+1]ທີ່ຢູ່ ຖ້າຫາກວ່າ r ເປັນຊ່ອງດຽວ, ຫຼັງຈາກນັ້ນນໍາ
ຊ່ອງຫວ່າງໃນ s ເຂົ້າໄປໃນອົງປະກອບ array ພິເສດ Seps[0] ແລະ
ຊ່ອງຫວ່າງຕໍ່ທ້າຍເຂົ້າໄປໃນອົງປະກອບ array ພິເສດ Seps[n],
ບ່ອນທີ່ n ແມ່ນມູນຄ່າກັບຄືນຂອງ ແບ່ງ(s, a, r, Seps). ການແຍກ
ປະຕິບັດຕົວດຽວກັນກັບການແບ່ງພາກສະຫນາມ, ອະທິບາຍຂ້າງເທິງ.
sprintf(fmt, expr-ບັນຊີລາຍຊື່) ພິມ expr-ບັນຊີລາຍຊື່ ອີງຕາມ fmt, ແລະສົ່ງຄືນສະຕຣິງຜົນໄດ້ຮັບ.
strtonum(str) ກວດກາ str, ແລະສົ່ງຄືນຄ່າຕົວເລກຂອງມັນ. ຖ້າ str ເລີ່ມຕົ້ນດ້ວຍ
ນໍາ 0, ປະຕິບັດມັນເປັນຕົວເລກແປດ. ຖ້າ str ເລີ່ມຕົ້ນດ້ວຍ
ນໍາ 0x or 0X, ປະຕິບັດມັນເປັນເລກຖານສິບຫົກ. ຖ້າບໍ່ດັ່ງນັ້ນ,
ສົມມຸດວ່າມັນເປັນຕົວເລກທົດສະນິຍົມ.
ຍ່ອຍ(r, s [, t]) ຄືກັນ gsub(), ແຕ່ແທນທີ່ພຽງແຕ່ substring ທໍາອິດທີ່ກົງກັນ.
ຍ່ອຍ(s, i [, n]) ກັບຄືນສູງສຸດ n- ຕົວອັກສອນຍ່ອຍຂອງ s ເລີ່ມຕົ້ນຢູ່ iທີ່ຢູ່ ຖ້າຫາກວ່າ n
ຖືກລະເວັ້ນ, ໃຊ້ສ່ວນທີ່ເຫຼືອຂອງ s.
ລຸ່ມ(str) ສົ່ງຄືນສຳເນົາຂອງສະຕຣິງ str, ມີຕົວອັກສອນຕົວພິມໃຫຍ່ທັງໝົດ
in str ແປເປັນຕົວພິມນ້ອຍທີ່ສອດຄ້ອງກັນ.
ຕົວອັກສອນທີ່ບໍ່ແມ່ນຕົວໜັງສືຖືກປະໄວ້ບໍ່ປ່ຽນແປງ.
topper(str) ສົ່ງຄືນສຳເນົາຂອງສະຕຣິງ str, ດ້ວຍຕົວພິມນ້ອຍທັງໝົດ
in str ແປເປັນຕົວພິມໃຫຍ່ທີ່ສອດຄ້ອງກັນຂອງເຂົາເຈົ້າ.
ຕົວອັກສອນທີ່ບໍ່ແມ່ນຕົວໜັງສືຖືກປະໄວ້ບໍ່ປ່ຽນແປງ.
ແກວ ເປັນ multibyte ຮູ້. ນີ້ຫມາຍຄວາມວ່າ ດັດຊະນີ (), ຄວາມຍາວ(), ຍ່ອຍ() ແລະ ການແຂ່ງຂັນ() ວຽກທັງໝົດ
ໃນແງ່ຂອງຕົວອັກສອນ, ບໍ່ແມ່ນ bytes.
ທີ່ໃຊ້ເວລາ ຫນ້າທີ່
ເນື່ອງຈາກວ່າຫນຶ່ງໃນການນໍາໃຊ້ຕົ້ນຕໍຂອງໂຄງການ AWK ແມ່ນການປຸງແຕ່ງໄຟລ໌ບັນທຶກທີ່ມີເວລາ
ຂໍ້ມູນຂ່າວສານ, ແກວ ສະຫນອງຫນ້າທີ່ດັ່ງຕໍ່ໄປນີ້ສໍາລັບການໄດ້ຮັບສະແຕມເວລາແລະ
ການຈັດຮູບແບບໃຫ້ເຂົາເຈົ້າ.
mktime(datespec)
ເປີດ datespec ເຂົ້າໄປໃນສະແຕມເວລາຂອງຮູບແບບດຽວກັນກັບສົ່ງຄືນໂດຍ ລະບົບ(), ແລະ
ກັບຄືນຜົນໄດ້ຮັບ. ໄດ້ datespec ແມ່ນສາຍຂອງແບບຟອມ ຍອ້ຍ MM DD HH MM SS[
DST]. ເນື້ອໃນຂອງສະຕຣິງແມ່ນຫົກຫຼືເຈັດຕົວເລກເປັນຕົວແທນ
ຕາມລໍາດັບຂອງປີເຕັມລວມທັງສະຕະວັດ, ເດືອນຈາກ 1 ຫາ 12, ມື້ຂອງ
ເດືອນຈາກ 1 ຫາ 31, ຊົ່ວໂມງຂອງມື້ຈາກ 0 ຫາ 23, ນາທີຈາກ 0 ຫາ
59, ທີສອງຈາກ 0 ຫາ 60, ແລະທຸງປະຢັດແສງເປັນທາງເລືອກ. ຄຸນຄ່າ
ຂອງຕົວເລກເຫຼົ່ານີ້ບໍ່ຈໍາເປັນຕ້ອງຢູ່ໃນຂອບເຂດທີ່ກໍານົດໄວ້; ສໍາລັບຕົວຢ່າງ, ຫນຶ່ງຊົ່ວໂມງ
ຂອງ -1 ຫມາຍຄວາມວ່າ 1 ຊົ່ວໂມງກ່ອນເວລາທ່ຽງຄືນ. ປະຕິທິນ Gregorian ຕົ້ນກຳເນີດ-ສູນແມ່ນ
ສົມມຸດວ່າ, ກັບປີ 0 ກ່ອນປີ 1 ແລະປີ -1 ກ່ອນປີ 0. ເວລາແມ່ນ
ຖືວ່າຢູ່ໃນເຂດເວລາທ້ອງຖິ່ນ. ຖ້າທຸງປະຢັດແສງກາງເວັນເປັນບວກ,
ເວລາແມ່ນສົມມຸດວ່າເວລາປະຢັດເວລາກາງເວັນ; ຖ້າສູນ, ເວລາແມ່ນສົມມຸດວ່າ
ເວລາມາດຕະຖານ; ແລະຖ້າເປັນລົບ (ຄ່າເລີ່ມຕົ້ນ), mktime() ຄວາມພະຍາຍາມທີ່ຈະກໍານົດ
ບໍ່ວ່າເວລາປະຢັດແສງມີຜົນຕໍ່ເວລາທີ່ກໍານົດໄວ້. ຖ້າ datespec
ບໍ່ມີອົງປະກອບພຽງພໍຫຼືຖ້າເວລາຜົນໄດ້ຮັບແມ່ນຢູ່ນອກຂອບເຂດ,
mktime() ຜົນຕອບແທນ -1.
strftime([ຮູບແບບ [, ເວລາ[, utc-ທຸງ]]])
ຮູບແບບ ເວລາ ອີງຕາມການສະເພາະໃນ ຮູບແບບທີ່ຢູ່ ຖ້າຫາກວ່າ utc-ທຸງ is
ປະຈຸບັນແລະບໍ່ແມ່ນສູນຫຼືບໍ່ແມ່ນ null, ຜົນໄດ້ຮັບແມ່ນຢູ່ໃນ UTC, ຖ້າບໍ່ດັ່ງນັ້ນຜົນໄດ້ຮັບ
ແມ່ນຢູ່ໃນເວລາທ້ອງຖິ່ນ. ໄດ້ ເວລາ ຄວນເປັນຮູບແບບດຽວກັນກັບທີ່ສົ່ງຄືນໂດຍ
ລະບົບ()ທີ່ຢູ່ ຖ້າຫາກວ່າ ເວລາ ຫາຍໄປ, ເວລາປະຈຸບັນຂອງມື້ຖືກນໍາໃຊ້. ຖ້າ ຮູບແບບ
ຫາຍໄປ, ຮູບແບບເລີ່ມຕົ້ນເທົ່າກັບຜົນຜະລິດຂອງ ວັນ(1) ຖືກນໍາໃຊ້. ໄດ້
ຮູບແບບເລີ່ມຕົ້ນແມ່ນມີຢູ່ໃນ PROCINFO["srftime"]. ເບິ່ງສະເພາະສໍາລັບ
ໄດ້ strftime() ຟັງຊັນໃນ ISO C ສໍາລັບການປ່ຽນຮູບແບບທີ່ຮັບປະກັນ
ສາມາດໃຊ້ໄດ້.
ລະບົບ() ກັບຄືນເວລາປັດຈຸບັນຂອງມື້ເປັນຈໍານວນວິນາທີນັບຕັ້ງແຕ່ Epoch
(1970-01-01 00:00:00 UTC on POSIX systems).
ບິດ ການຫມູນໃຊ້ ຫນ້າທີ່
ແກວ ສະຫນອງຫນ້າທີ່ການຫມູນໃຊ້ເລັກນ້ອຍຕໍ່ໄປນີ້. ພວກເຂົາເຮັດວຽກໂດຍການປ່ຽນສອງເທົ່າ.
ຄວາມແມ່ນຍໍາຂອງຈຸດທີ່ເລື່ອນໄດ້ກັບ uintmax_t integers, ການດໍາເນີນການ, ແລະຫຼັງຈາກນັ້ນ
ປ່ຽນຜົນໄດ້ຮັບກັບຄືນໄປບ່ອນຈຸດລອຍ. ຫນ້າທີ່ແມ່ນ:
ແລະ(v1, v2 [, ...]) ສົ່ງຄືນຄ່າ bitwise AND ຂອງຄ່າທີ່ລະບຸໄວ້ໃນລາຍການ argument.
ຕ້ອງມີຢ່າງຫນ້ອຍສອງ.
ສົມບູນ(h) ກັບຄືນສ່ວນເພີ່ມເຕີມ bitwise ຂອງ h.
lshift(h, ນັບ) ກັບຄືນມູນຄ່າຂອງ h, ຍ້າຍອອກໂດຍ ນັບ ບິດ.
ຫຼື(v1, v2 [, ...]) ສົ່ງຄືນຄ່າ bitwise OR ຂອງຄ່າທີ່ລະບຸໄວ້ໃນລາຍການ argument.
ຕ້ອງມີຢ່າງຫນ້ອຍສອງ.
rshift(h, ນັບ) ກັບຄືນມູນຄ່າຂອງ h, ປ່ຽນສິດໂດຍ ນັບ ບິດ.
xor(v1, v2 [, ...]) ສົ່ງຄ່າ XOR ບິດບິດຂອງຄ່າທີ່ສະໜອງໃຫ້ໃນລາຍການອາກິວເມັນ.
ຕ້ອງມີຢ່າງຫນ້ອຍສອງ.
ປະເພດ ຫນ້າທີ່
ຟັງຊັນຕໍ່ໄປນີ້ແມ່ນໃຊ້ກັບອະເຣຫຼາຍມິຕິ.
isarray(x)
ກັບຄືນຄວາມຈິງຖ້າຫາກວ່າ x ເປັນ array, ບໍ່ຖືກຕ້ອງຖ້າບໍ່ດັ່ງນັ້ນ.
Internationalization ຫນ້າທີ່
ຟັງຊັນຕໍ່ໄປນີ້ອາດຈະຖືກໃຊ້ຈາກພາຍໃນໂປຣແກຣມ AWK ຂອງທ່ານເພື່ອແປສະຕຣິງ
ໃນເວລາແລ່ນ. ສໍາລັບລາຍລະອຽດເຕັມ, ເບິ່ງ GAWK: ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ.
bindtextdomain(ລະບົບ [, ໂດເມນ])
ລະບຸໄດເລກະທໍລີທີ່ ແກວ ຊອກຫາ .gmo ໄຟລ໌, ໃນກໍລະນີທີ່ເຂົາເຈົ້າຈະບໍ່ຫຼື
ບໍ່ສາມາດໄດ້ຮັບການວາງໄວ້ໃນສະຖານທີ່ "ມາດຕະຖານ" (ເຊັ່ນ: ໃນລະຫວ່າງການທົດສອບ). ມັນກັບຄືນມາ
ໄດເລກະທໍລີທີ່ ໂດເມນ ແມ່ນ `` ຜູກມັດ.
ຄ່າເລີ່ມຕົ້ນ ໂດເມນ ແມ່ນມູນຄ່າຂອງ TEXTDOMAINທີ່ຢູ່ ຖ້າຫາກວ່າ ລະບົບ ແມ່ນສະຕຣິງ null
(""), ແລ້ວ bindtextdomain() ສົ່ງຄືນການຜູກມັດປະຈຸບັນສໍາລັບການມອບໃຫ້ ໂດເມນ.
dcgettext(string [, ໂດເມນ [, ຫມວດ: ພາສາ]])
ກັບຄືນການແປພາສາຂອງ string ໃນໂດເມນຂໍ້ຄວາມ ໂດເມນ ສໍາລັບປະເພດທ້ອງຖິ່ນ
ຫມວດ: ພາສາ. ຄ່າເລີ່ມຕົ້ນສໍາລັບ ໂດເມນ ແມ່ນມູນຄ່າປັດຈຸບັນຂອງ TEXTDOMAIN. ໄດ້
ຄ່າເລີ່ມຕົ້ນສໍາລັບ ຫມວດ: ພາສາ is "LC_MESSAGES".
ຖ້າທ່ານສະຫນອງມູນຄ່າສໍາລັບ ຫມວດ: ພາສາ, ມັນຕ້ອງເປັນສະຕຣິງເທົ່າກັບອັນນຶ່ງທີ່ຮູ້ຈັກ
ປະເພດທ້ອງຖິ່ນທີ່ອະທິບາຍໄວ້ໃນ GAWK: ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ. ເຈົ້າຕ້ອງຄືກັນ
ສະໜອງໂດເມນຂໍ້ຄວາມ. ໃຊ້ TEXTDOMAIN ຖ້າທ່ານຕ້ອງການໃຊ້ໂດເມນໃນປະຈຸບັນ.
dcngettext(string1, string2, ຈໍານວນ [, ໂດເມນ [, ຫມວດ: ພາສາ]])
ກັບຄືນແບບຟອມຫຼາຍທີ່ໃຊ້ສໍາລັບ ຈໍານວນ ຂອງການແປຂອງ string1 ແລະ string2 in
ໂດເມນຂໍ້ຄວາມ ໂດເມນ ສໍາລັບປະເພດທ້ອງຖິ່ນ ຫມວດ: ພາສາ. ຄ່າເລີ່ມຕົ້ນສໍາລັບ ໂດເມນ is
ມູນຄ່າປະຈຸບັນຂອງ TEXTDOMAIN. ຄ່າເລີ່ມຕົ້ນສໍາລັບ ຫມວດ: ພາສາ is "LC_MESSAGES".
ຖ້າທ່ານສະຫນອງມູນຄ່າສໍາລັບ ຫມວດ: ພາສາ, ມັນຕ້ອງເປັນສະຕຣິງເທົ່າກັບອັນນຶ່ງທີ່ຮູ້ຈັກ
ປະເພດທ້ອງຖິ່ນທີ່ອະທິບາຍໄວ້ໃນ GAWK: ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ. ເຈົ້າຕ້ອງຄືກັນ
ສະໜອງໂດເມນຂໍ້ຄວາມ. ໃຊ້ TEXTDOMAIN ຖ້າທ່ານຕ້ອງການໃຊ້ໂດເມນໃນປະຈຸບັນ.
ຜູ້ໃຊ້ຖືກ ກຳ ນົດ FUNCTIONS
ຟັງຊັນໃນ AWK ແມ່ນຖືກກໍານົດດັ່ງຕໍ່ໄປນີ້:
ຫນ້າທີ່ ຊື່(ພາລາມິເຕີ ບັນຊີລາຍຊື່) { ບົດລາຍງານ }
ຟັງຊັນຖືກປະຕິບັດເມື່ອພວກມັນຖືກເອີ້ນຈາກພາຍໃນຕົວສະແດງອອກໃນຮູບແບບຫຼື
ການກະທໍາ. ຕົວກໍານົດການຕົວຈິງທີ່ສະຫນອງໃນການໂທຟັງຊັນຖືກນໍາໃຊ້ເພື່ອ instantiate ໄດ້
ຕົວກໍານົດການຢ່າງເປັນທາງການປະກາດໃນຫນ້າທີ່. Arrays ແມ່ນຜ່ານໂດຍການອ້າງອີງ, ອື່ນໆ
ຕົວແປແມ່ນຜ່ານໂດຍມູນຄ່າ.
ເນື່ອງຈາກຟັງຊັນຕ່າງໆບໍ່ແມ່ນສ່ວນໜຶ່ງຂອງພາສາ AWK, ການຈັດຫາທ້ອງຖິ່ນ
ຕົວແປແມ່ນຂ້ອນຂ້າງ clumsy: ພວກເຂົາເຈົ້າໄດ້ຖືກປະກາດເປັນຕົວກໍານົດການພິເສດໃນບັນຊີລາຍຊື່ພາລາມິເຕີ.
ສົນທິສັນຍາແມ່ນເພື່ອແຍກຕົວແປທ້ອງຖິ່ນອອກຈາກຕົວກໍານົດການທີ່ແທ້ຈິງໂດຍຊ່ອງຫວ່າງພິເສດໃນ
ບັນຊີລາຍຊື່ພາລາມິເຕີ. ຍົກຕົວຢ່າງ:
ຫນ້າທີ່ f(p, q, a, b) # a ແລະ b ມີ ທ້ອງຖິ່ນ
{
...
}
/abc/ { ... ; f(1, 2) ; ... }
ວົງເລັບຊ້າຍໃນການເອີ້ນຟັງຊັນແມ່ນຕ້ອງການເພື່ອປະຕິບັດຕາມຟັງຊັນທັນທີ
ຊື່, ໂດຍບໍ່ມີການແຊກແຊງໃດໆ. ນີ້ຫຼີກເວັ້ນຄວາມບໍ່ແນ່ນອນ syntactic ກັບ
ຕົວປະຕິບັດການ concatenation. ຂໍ້ຈຳກັດນີ້ບໍ່ນຳໃຊ້ກັບຟັງຊັນໃນຕົວທີ່ລະບຸໄວ້
ຂ້າງເທິງ.
ຟັງຊັນອາດຈະໂທຫາກັນແລະກັນແລະອາດຈະ recursive. ພາລາມິເຕີຟັງຊັນທີ່ໃຊ້ເປັນທ້ອງຖິ່ນ
ຕົວແປແມ່ນເລີ່ມຕົ້ນເປັນສະຕຣິງ null ແລະຕົວເລກສູນຕາມການເອີ້ນຟັງຊັນ.
ການນໍາໃຊ້ ການກັບຄືນມາ ຕົວຢ່າງ ເພື່ອສົ່ງຄືນຄ່າຈາກຟັງຊັນ. ຄ່າກັບຄືນແມ່ນບໍ່ຖືກກໍານົດຖ້າບໍ່ມີ
ມູນຄ່າແມ່ນໃຫ້, ຫຼືຖ້າຟັງຊັນກັບຄືນມາໂດຍ "ຫຼຸດລົງ" ໃນຕອນທ້າຍ.
ໃນຖານະເປັນ ແກວ ການຂະຫຍາຍ, ຫນ້າທີ່ອາດຈະຖືກເອີ້ນໂດຍທາງອ້ອມ. ເພື່ອເຮັດສິ່ງນີ້, ກໍານົດຊື່ຂອງ
ຟັງຊັນທີ່ຈະເອີ້ນວ່າ, ເປັນ string, ກັບຕົວແປ. ຫຼັງຈາກນັ້ນ, ການນໍາໃຊ້ຕົວແປເປັນຖ້າຫາກວ່າມັນ
ແມ່ນຊື່ຂອງການທໍາງານ, ຄໍານໍາຫນ້າດ້ວຍ an @ ສັນຍາລັກ, ເຊັ່ນ:
ຫນ້າທີ່ myfunc()
{
ພິມ "myfunc ເອີ້ນວ່າ"
...
}
{ ...
the_func = "myfunc"
@the_func() # ໂທ ໂດຍຜ່ານການ the_func to myfunc
...
}
ໃນຖານະເປັນສະບັບ 4.1.2, ນີ້ເຮັດວຽກກັບຫນ້າທີ່ກໍານົດໂດຍຜູ້ໃຊ້, ຫນ້າທີ່ສ້າງໃນ, ແລະ
ຫນ້າທີ່ຂະຫຍາຍ.
If --lint ໄດ້ສະຫນອງໃຫ້, ແກວ ເຕືອນກ່ຽວກັບການໂທຫາຫນ້າທີ່ບໍ່ໄດ້ກໍານົດໃນເວລາວິເຄາະ,
ແທນທີ່ຈະຢູ່ໃນເວລາແລ່ນ. ການໂທຫາຟັງຊັນທີ່ບໍ່ໄດ້ກໍານົດໃນເວລາແລ່ນແມ່ນຄວາມຜິດພາດທີ່ຮ້າຍແຮງ.
ຄໍາວ່າ ມ່ວນ ອາດຈະຖືກນໍາໃຊ້ໃນສະຖານທີ່ຂອງ ຫນ້າທີ່, ເຖິງແມ່ນວ່ານີ້ຖືກປະຕິເສດ.
ໄດນາມິກ ການຂົນສົ່ງ NEW FUNCTIONS
ທ່ານສາມາດເພີ່ມປະສິດທິພາບໃນຕົວໃຫມ່ໃນການແລ່ນ ແກວ ນາຍພາສາກັບ
@ໂຫຼດ ຖະແຫຼງການ. ລາຍລະອຽດເຕັມທີ່ເກີນຂອບເຂດຂອງໜ້າຄູ່ມືນີ້; ເບິ່ງ GAWK:
ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ.
ລາຍເຊັນ
ໄດ້ ແກວ profiler ຍອມຮັບສອງສັນຍານ. SIGUSR1 ເຮັດໃຫ້ມັນ dump ຂໍ້ມູນແລະຫນ້າທີ່
ໂທຫາ stack ກັບໄຟລ໌ profile, ເຊິ່ງແມ່ນ awkprof.out, ຫຼືໄຟລ໌ໃດກໍ່ຕາມທີ່ມີຊື່
ກັບ --ໂປຣໄຟລ໌ ທາງເລືອກ. ຫຼັງຈາກນັ້ນມັນຍັງສືບຕໍ່ດໍາເນີນການ. ຕິດຕາມ ສາເຫດ ແກວ ການຖິ້ມຂີ້ເຫຍື້ອ
profile ແລະຟັງຊັນ call stack ແລະຫຼັງຈາກນັ້ນອອກ.
ສາກົນ
ຄົງສະຕຣິງແມ່ນລໍາດັບຂອງຕົວອັກສອນທີ່ອ້ອມຮອບດ້ວຍວົງຢືມຄູ່. ໃນທີ່ບໍ່ແມ່ນພາສາອັງກິດ
ສະພາບແວດລ້ອມການເວົ້າ, ມັນເປັນໄປໄດ້ທີ່ຈະຫມາຍສະຕຣິງໃນໂຄງການ AWK ຕາມຄວາມຕ້ອງການ
ການແປເປັນພາສາທໍາມະຊາດທ້ອງຖິ່ນ. ສະຕຣິງດັ່ງກ່າວຖືກຫມາຍຢູ່ໃນໂຄງການ AWK ດ້ວຍ
ຂີດກ້ອງ (“_”). ຍົກຕົວຢ່າງ,
ແກວ 'ເລີ່ມຕົ້ນ { ພິມ "ສະບາຍດີ, ໂລກ " }'
ພິມຢູ່ສະເໝີ ສະບາຍດີ, ໂລກ. ແຕ່,
ແກວ 'ເລີ່ມຕົ້ນ { ພິມ _"ສະບາຍດີ, ໂລກ " }'
ອາດຈະພິມ ສະບາຍດີ, monde ໃນປະເທດຝຣັ່ງ.
ມີຫຼາຍຂັ້ນຕອນທີ່ກ່ຽວຂ້ອງກັບການຜະລິດ ແລະແລ່ນໂປຣແກຣມ AWK ທີ່ສາມາດແກ້ໄຂໄດ້.
1. ຕື່ມ ກ ເລີ່ມຕົ້ນ ການປະຕິບັດເພື່ອກໍານົດມູນຄ່າໃຫ້ກັບ TEXTDOMAIN ຕົວແປເພື່ອກໍານົດໂດເມນຂໍ້ຄວາມ
ກັບຊື່ທີ່ກ່ຽວຂ້ອງກັບໂຄງການຂອງທ່ານ:
ເລີ່ມຕົ້ນ { TEXTDOMAIN = "myprog" }
ນີ້ອະນຸຍາດໃຫ້ ແກວ ເພື່ອຊອກຫາ .gmo ໄຟລ໌ທີ່ກ່ຽວຂ້ອງກັບໂຄງການຂອງທ່ານ. ໂດຍບໍ່ມີການນີ້
ຂັ້ນຕອນ, ແກວ ໃຊ້ໄດ້ ຂໍ້ຄວາມ ໂດເມນຂໍ້ຄວາມ, ເຊິ່ງອາດຈະບໍ່ມີການແປ
ສຳ ລັບໂປຼແກຼມຂອງທ່ານ.
2. ໝາຍສະຕຣິງທັງໝົດທີ່ຄວນແປດ້ວຍຂີດກ້ອງ.
3. ຖ້າຈໍາເປັນ, ໃຫ້ໃຊ້ dcgettext() ແລະ / ຫຼື bindtextdomain() ຫນ້າທີ່ໃນໂຄງການຂອງທ່ານ,
ຕາມຄວາມເຫມາະສົມ.
4. ແລ່ນ ແກວ --gen-pot -f myprog.awk > myprog.pot ການຜະລິດເປັນ .ຫມໍ້ ຍື່ນ ສຳ ລັບຂອງທ່ານ
ໂຄງການ.
5. ສະຫນອງການແປພາສາທີ່ເຫມາະສົມ, ແລະການກໍ່ສ້າງແລະຕິດຕັ້ງທີ່ສອດຄ້ອງກັນ .gmo ໄຟລ໌.
ລັກສະນະການເປັນສາກົນແມ່ນໄດ້ອະທິບາຍຢ່າງລະອຽດໃນ GAWK: ປະສິດທິພາບ AWK
ດໍາເນີນໂຄງການ.
POSIX ຄວາມເຂົ້າກັນໄດ້
ເປົ້າຫມາຍຕົ້ນຕໍສໍາລັບການ ແກວ ແມ່ນເຂົ້າກັນໄດ້ກັບມາດຕະຖານ POSIX, ເຊັ່ນດຽວກັນກັບ
ສະບັບຫລ້າສຸດຂອງ Brian Kernighan's ງຸ່ມ. ຕໍ່ໄປນີ້, ແກວ ລວມເອົາສິ່ງຕໍ່ໄປນີ້
ຄຸນນະສົມບັດທີ່ເຫັນໄດ້ຊັດເຈນຂອງຜູ້ໃຊ້ທີ່ບໍ່ໄດ້ອະທິບາຍໄວ້ໃນປື້ມ AWK, ແຕ່ເປັນສ່ວນຫນຶ່ງຂອງ Brian
ສະບັບ Kernighan ຂອງ ງຸ່ມ, ແລະຢູ່ໃນມາດຕະຖານ POSIX.
ປື້ມຊີ້ບອກວ່າການກໍານົດຕົວແປຂອງເສັ້ນຄໍາສັ່ງເກີດຂຶ້ນເມື່ອໃດ ງຸ່ມ ຖ້າບໍ່ດັ່ງນັ້ນ
ເປີດການໂຕ້ຖຽງເປັນໄຟລ໌, ເຊິ່ງແມ່ນຫຼັງຈາກ ເລີ່ມຕົ້ນ ກົດລະບຽບແມ່ນປະຕິບັດ. ຢ່າງໃດກໍຕາມ, ໃນ
ການປະຕິບັດກ່ອນຫນ້ານີ້, ໃນເວລາທີ່ການມອບຫມາຍດັ່ງກ່າວໄດ້ປາກົດຢູ່ຕໍ່ຫນ້າຊື່ໄຟລ໌ໃດຫນຶ່ງ, ໄດ້
ການມອບຫມາຍຈະເກີດຂຶ້ນ ກ່ອນທີ່ຈະ ໄດ້ ເລີ່ມຕົ້ນ ກົດລະບຽບໄດ້ດໍາເນີນການ. ຄໍາຮ້ອງສະຫມັກແມ່ນຂຶ້ນກັບ
ນີ້ "ຄຸນສົມບັດ." ເມື່ອໃດ ງຸ່ມ ໄດ້ຖືກປ່ຽນໃຫ້ກົງກັບເອກະສານຂອງມັນ, ໄດ້ -v ທາງເລືອກສໍາລັບການ
ການມອບຫມາຍຕົວແປກ່ອນການປະຕິບັດໂຄງການໄດ້ຖືກເພີ່ມເພື່ອຮອງຮັບຄໍາຮ້ອງສະຫມັກທີ່
ຂຶ້ນກັບພຶດຕິກໍາເກົ່າ. (ລັກສະນະນີ້ແມ່ນຕົກລົງເຫັນດີໂດຍທັງສອງ Bell
ຫ້ອງທົດລອງ ແລະຜູ້ພັດທະນາ GNU.)
ເມື່ອປະມວນຜົນການໂຕ້ຖຽງ, ແກວ ໃຊ້ຕົວເລືອກພິເສດ “--” ເພື່ອສົ່ງສັນຍານການສິ້ນສຸດ
ການໂຕ້ຖຽງ. ໃນຮູບແບບຄວາມເຂົ້າກັນໄດ້, ມັນເຕືອນກ່ຽວກັບການແຕ່ບໍ່ດັ່ງນັ້ນລະເລີຍທາງເລືອກທີ່ບໍ່ໄດ້ກໍານົດ.
ໃນການດໍາເນີນງານປົກກະຕິ, ການໂຕ້ຖຽງດັ່ງກ່າວຖືກສົ່ງກັບໂຄງການ AWK ເພື່ອໃຫ້ມັນດໍາເນີນການ.
ປື້ມ AWK ບໍ່ໄດ້ກໍານົດມູນຄ່າກັບຄືນຂອງ ແຊນ(). ມາດຕະຖານ POSIX ມີມັນ
ສົ່ງຄືນເມັດພັນທີ່ມັນໃຊ້, ເພື່ອອະນຸຍາດໃຫ້ຕິດຕາມລໍາດັບຕົວເລກແບບສຸ່ມ.
ເພາະສະນັ້ນ ແຊນ() in ແກວ ຍັງສົ່ງຄືນແນວພັນປະຈຸບັນຂອງມັນ.
ລັກສະນະໃຫມ່ອື່ນໆແມ່ນ: ການນໍາໃຊ້ຫຼາຍ -f ທາງເລືອກ (ຈາກ MKS ງຸ່ມ) the ສະພາບແວດລ້ອມ array;
ໄດ້ \a, ແລະ \v ລໍາດັບ escape (ເຮັດໃນເບື້ອງຕົ້ນໃນ ແກວ ແລະປ້ອນເຂົ້າໄປໃນລະຄັງ
ສະບັບຫ້ອງທົດລອງ); ໄດ້ ລຸ່ມ() ແລະ topper() ຟັງຊັນໃນຕົວ (ຈາກ Bell
ສະບັບຫ້ອງທົດລອງ); ແລະຂໍ້ກໍານົດການແປງ ISO C ໃນ printf (ເຮັດຄັ້ງທໍາອິດໃນ
ສະບັບ Bell Laboratories).
ປະຫວັດສາດ ຄຸນລັກສະນະ
ມີລັກສະນະຫນຶ່ງຂອງການປະຕິບັດ AWK ປະຫວັດສາດທີ່ ແກວ ສະຫນັບສະຫນູນ: ມັນເປັນໄປໄດ້
ໂທຫາ ຄວາມຍາວ() ການທໍາງານຂອງການກໍ່ສ້າງບໍ່ພຽງແຕ່ບໍ່ມີການໂຕ້ຖຽງ, ແຕ່ເຖິງແມ່ນວ່າບໍ່ມີ
ວົງເລັບ! ດັ່ງນັ້ນ,
a = ຄວາມຍາວ # ຍານບໍລິສຸດ ບາງສິ່ງບາງຢ່າງ 60, ແບດແມນ!
ແມ່ນຄືກັນກັບທັງສອງ
a = ຄວາມຍາວ()
a = ຄວາມຍາວ($0)
ການນໍາໃຊ້ຄຸນນະສົມບັດນີ້ແມ່ນການປະຕິບັດທີ່ບໍ່ດີ, ແລະ ແກວ ອອກຄໍາເຕືອນກ່ຽວກັບການນໍາໃຊ້ຂອງມັນຖ້າຫາກວ່າ --lint is
ລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງ.
GNU ການສົນທະນາ
ແກວ ມີສ່ວນຂະຫຍາຍໄປຫາ POSIX ຫຼາຍເກີນໄປ ງຸ່ມ. ພວກເຂົາເຈົ້າໄດ້ຖືກອະທິບາຍໄວ້ໃນນີ້
ພາກ. ສ່ວນຂະຫຍາຍທັງໝົດທີ່ອະທິບາຍຢູ່ທີ່ນີ້ສາມາດຖືກປິດໃຊ້ງານໄດ້ໂດຍການເອີ້ນ ແກວ ກັບ
-- ແບບດັ້ງເດີມ or --posix ຕົວເລືອກ
ລັກສະນະດັ່ງຕໍ່ໄປນີ້ຂອງ ແກວ ບໍ່ມີຢູ່ໃນ POSIX ງຸ່ມ.
· ບໍ່ມີການຊອກຫາເສັ້ນທາງແມ່ນປະຕິບັດສໍາລັບໄຟລ໌ທີ່ມີຊື່ໂດຍຜ່ານການ -f ທາງເລືອກ. ເພາະສະນັ້ນຈຶ່ງ AWKPATH
ຕົວປ່ຽນແປງສະພາບແວດລ້ອມບໍ່ແມ່ນພິເສດ.
· ບໍ່ມີສິ່ງອໍານວຍຄວາມສະດວກສໍາລັບການເຮັດການລວມໄຟລ໌ (ແກວ's @ລວມ ກົນໄກ).
· ບໍ່ມີສິ່ງອໍານວຍຄວາມສະດວກສໍາລັບການເພີ່ມການເຄື່ອນໄຫວໃຫມ່ທີ່ຂຽນໄວ້ໃນ C (ແກວ's @ໂຫຼດ
ກົນໄກ).
·ທ \x ລໍາດັບການຫລົບຫນີ. (ພິການກັບ --posix.)
·ຄວາມສາມາດໃນການສືບຕໍ່ສາຍຫຼັງຈາກ ? ແລະ :. (ພິການກັບ --posix.)
·ຄ່າຄົງທີ່ຂອງເລກຖານສິບແປດ ແລະເລກຖານສິບຫົກໃນໂປຣແກຣມ AWK.
·ທ ARGIND, BINMODE, ERRNO, ເສັ້ນ, RT ແລະ TEXTDOMAIN ຕົວແປບໍ່ແມ່ນພິເສດ.
·ທ ບໍ່ສົນໃຈ ຕົວແປແລະຜົນຂ້າງຄຽງຂອງມັນບໍ່ມີ.
·ທ ທົ່ງນາ ການແບ່ງເຂດຄວາມກວ້າງຂອງຕົວແປ ແລະຄົງທີ່.
·ທ ຟຟລ ຕົວປ່ຽນແປງແລະການແບ່ງເຂດໂດຍອີງໃສ່ຄ່າພາກສະຫນາມ.
·ທ PROCINFO array ບໍ່ສາມາດໃຊ້ໄດ້.
· ການນໍາໃຊ້ RS ເປັນການສະແດງອອກປົກກະຕິ.
· ຊື່ໄຟລ໌ພິເສດທີ່ມີຢູ່ສໍາລັບການປ່ຽນເສັ້ນທາງ I/O ບໍ່ໄດ້ຖືກຮັບຮູ້.
·ທ |& ຜູ້ປະກອບການສ້າງຂະບວນການຮ່ວມມື.
·ທ BEGINFILE ແລະ ENDFILE ບໍ່ມີຮູບແບບພິເສດ.
· ຄວາມສາມາດທີ່ຈະແບ່ງອອກຕົວອັກສອນຂອງບຸກຄົນໂດຍໃຊ້ສະຕຣິງ null ເປັນຄ່າຂອງ FS,
ແລະເປັນການໂຕ້ຖຽງທີສາມ ແບ່ງປັນ ().
· ການໂຕ້ຖຽງທີສີ່ທາງເລືອກທີ່ຈະ ແບ່ງປັນ () ເພື່ອຮັບເອົາບົດເລື່ອງຕົວແຍກ.
· ການໂຕ້ຖຽງທີສອງທາງເລືອກໃນການ ປິດ () function
· ການໂຕ້ຖຽງທີສາມທາງເລືອກໃນການ ການແຂ່ງຂັນ() function
· ຄວາມສາມາດໃນການນໍາໃຊ້ສະເພາະຕໍາແຫນ່ງທີ່ມີ printf ແລະ sprintf().
·ຄວາມສາມາດໃນການຜ່ານ array ກັບ ຄວາມຍາວ().
·ທ ແລະ(), ຊະນິດ(), assorti(), bindtextdomain(), compl(), dcgettext(), dcngettext(),
gensub(), lshift(), mktime(), ຫຼື(), patsplit(), rshift(), strftime(), strtonum(),
ລະບົບ() ແລະ xor() ປະຕິບັດຫນ້າ.
· ສະຕຣິງທີ່ສາມາດແປໄດ້.
ປື້ມ AWK ບໍ່ໄດ້ກໍານົດມູນຄ່າກັບຄືນຂອງ ປິດ () function ແກວ's ປິດ ()
ຕອບຄ່າຈາກ ປິດ(3), ຫຼື ປິດ(3), ເມື່ອປິດໄຟລ໌ຜົນຜະລິດຫຼືທໍ່,
ຕາມລໍາດັບ. ມັນສົ່ງຄືນສະຖານະທາງອອກຂອງຂະບວນການເມື່ອປິດທໍ່ປ້ອນຂໍ້ມູນ. ໄດ້
ຄ່າກັບຄືນແມ່ນ -1 ຖ້າໄຟລ໌ທີ່ມີຊື່, ທໍ່ຫຼືຂະບວນການຮ່ວມກັນບໍ່ໄດ້ຖືກເປີດດ້ວຍ a
ການປ່ຽນເສັ້ນທາງ.
ເມື່ອໃດ ແກວ ແມ່ນ invoked ກັບ -- ແບບດັ້ງເດີມ ທາງເລືອກ, ຖ້າຫາກວ່າ fs ການໂຕ້ຖຽງກັບ -F ທາງເລືອກແມ່ນ
"t", ຫຼັງຈາກນັ້ນ FS ຖືກຕັ້ງເປັນຕົວອັກສອນແຖບ. ໃຫ້ສັງເກດວ່າການພິມ ແກວ -F\t ... ສາເຫດພຽງແຕ່
shell ເພື່ອອ້າງເຖິງ "t," ແລະບໍ່ຜ່ານ "\t" ໄປຫາ -F ທາງເລືອກ. ນັບຕັ້ງແຕ່ນີ້ແມ່ນ
ແທນທີ່ຈະເປັນກໍລະນີພິເສດທີ່ຂີ້ຮ້າຍ, ມັນບໍ່ແມ່ນພຶດຕິກໍາເລີ່ມຕົ້ນ. ພຶດຕິກໍານີ້ຍັງບໍ່ໄດ້
ເກີດຂື້ນຖ້າ --posix ໄດ້ຖືກລະບຸໄວ້. ເພື່ອໃຫ້ໄດ້ຕົວອັກສອນແຖບເປັນພາກສະຫນາມຢ່າງແທ້ຈິງ
ຕົວແຍກ, ມັນດີທີ່ສຸດທີ່ຈະໃຊ້ວົງຢືມດຽວ: ແກວ -F'\t' ....
ENVIRONMENT ຄວາມຮັບຜິດຊອບ
ໄດ້ AWKPATH ຕົວແປສະພາບແວດລ້ອມສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫນອງບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີທີ່ ແກວ
ຄົ້ນຫາໃນເວລາທີ່ຊອກຫາໄຟລ໌ທີ່ມີຊື່ຜ່ານ -f, --file, -i ແລະ --ລວມ ທາງເລືອກ. ຖ້າ
ການຄົ້ນຫາເບື້ອງຕົ້ນລົ້ມເຫລວ, ເສັ້ນທາງຖືກຄົ້ນຫາອີກເທື່ອຫນຶ່ງຫຼັງຈາກ appended . awk ກັບຊື່ໄຟລ໌.
ໄດ້ AWKLIBPATH ຕົວແປສະພາບແວດລ້ອມສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫນອງບັນຊີລາຍຊື່ຂອງໄດເລກະທໍລີທີ່ ແກວ
ຄົ້ນຫາໃນເວລາທີ່ຊອກຫາໄຟລ໌ທີ່ມີຊື່ຜ່ານ -l ແລະ -- ໂຫຼດ ຕົວເລືອກ
ໄດ້ GAWK_READ_TIMEOUT ຕົວແປສະພາບແວດລ້ອມສາມາດຖືກນໍາໃຊ້ເພື່ອກໍານົດເວລາຫມົດເວລາໃນ
milliseconds ສໍາລັບການອ່ານ input ຈາກ terminal, ທໍ່ຫຼືການສື່ສານສອງທາງລວມທັງ
ເຕົ້າຮັບ.
ສໍາລັບການເຊື່ອມຕໍ່ກັບ host ຫ່າງໄກສອກຫຼີກໂດຍຜ່ານ socket, GAWK_SOCK_RETRIES ຄວບຄຸມຈໍານວນຂອງ
ພະຍາຍາມ, ແລະ GAWK_MSEC_SLEEP ແລະໄລຍະຫ່າງລະຫວ່າງການພະຍາຍາມ. ໄລຍະຫ່າງແມ່ນຢູ່ໃນ
ມິນລິວິນາທີ. ກ່ຽວກັບລະບົບທີ່ບໍ່ສະຫນັບສະຫນູນ ນອນຫລັບ(3), ມູນຄ່າຖືກປັດຂຶ້ນເປັນ
ຈໍານວນວິນາທີ.
If POSIXLY_CORRECT ມີຢູ່ໃນສະພາບແວດລ້ອມ, ຫຼັງຈາກນັ້ນ ແກວ ປະຕິບັດຕົວຄືກັບວ່າ --posix ໄດ້
ໄດ້ຖືກລະບຸໄວ້ໃນເສັ້ນຄໍາສັ່ງ. ຖ້າ --lint ໄດ້ລະບຸໄວ້, ແກວ ອອກຄໍາເຕືອນ
ຂໍ້ຄວາມຕໍ່ກັບຜົນກະທົບນີ້.
ອອກ STATUS
ຖ້າ ການທ່ອງທ່ຽວ ຄໍາຖະແຫຼງທີ່ຖືກນໍາໃຊ້ດ້ວຍຄ່າ, ຫຼັງຈາກນັ້ນ ແກວ ອອກດ້ວຍຄ່າຕົວເລກທີ່ໃຫ້
ກັບມັນ.
ຖ້າບໍ່ດັ່ງນັ້ນ, ຖ້າບໍ່ມີບັນຫາໃນລະຫວ່າງການປະຕິບັດ, ແກວ ອອກດ້ວຍຄ່າຂອງ C
ຄົງທີ່ EXIT_SUCCESS. ນີ້ປົກກະຕິແລ້ວແມ່ນສູນ.
ຖ້າຫາກວ່າຄວາມຜິດພາດເກີດຂຶ້ນ, ແກວ ອອກດ້ວຍຄ່າຄົງທີ່ C EXIT_FAILURE. ນີ້ແມ່ນ
ປົກກະຕິແລ້ວຫນຶ່ງ.
If ແກວ ອອກຈາກເນື່ອງຈາກຄວາມຜິດພາດທີ່ຮ້າຍແຮງ, ສະຖານະການອອກແມ່ນ 2. ໃນລະບົບທີ່ບໍ່ແມ່ນ POSIX, ນີ້
ມູນຄ່າອາດຈະຖືກແຜນທີ່ເປັນ EXIT_FAILURE.
ເວີຊັ່ນ ຂໍ້ມູນ
ເອກະສານໜ້ານີ້ ແກວ, ຮຸ່ນ 4.1.
AUTHORS
ສະບັບຕົ້ນສະບັບຂອງ UNIX ງຸ່ມ ໄດ້ຖືກອອກແບບແລະປະຕິບັດໂດຍ Alfred Aho, Peter
Weinberger, ແລະ Brian Kernighan ຂອງ Bell Laboratories. Brian Kernighan ສືບຕໍ່
ຮັກສາແລະເສີມຂະຫຍາຍມັນ.
Paul Rubin ແລະ Jay Fenlason, ຈາກ Free Software Foundation, ຂຽນ ແກວ, ເພື່ອໃຫ້ເຂົ້າກັນໄດ້
ກັບສະບັບຕົ້ນສະບັບຂອງ ງຸ່ມ ແຈກຢາຍຢູ່ໃນ Seventh Edition UNIX. John Woods
ໄດ້ປະກອບສ່ວນຈໍານວນຂອງການແກ້ໄຂ bug. David Trueman, ດ້ວຍການປະກອບສ່ວນຈາກ Arnold Robbins,
ໄດ້ ແກວ ເຂົ້າກັນໄດ້ກັບລຸ້ນໃໝ່ຂອງ UNIX ງຸ່ມ. Arnold Robbins ແມ່ນປະຈຸບັນ
ຜູ້ຮັກສາ.
ເບິ່ງ GAWK: ປະສິດທິພາບ AWK ດໍາເນີນໂຄງການ ສໍາລັບບັນຊີລາຍຊື່ເຕັມຂອງຜູ້ປະກອບສ່ວນ ແກວ ແລະມັນ
ເອກະສານ.
ເບິ່ງ README ໄຟລ໌ໃນ ແກວ ການແຈກຢາຍສໍາລັບຂໍ້ມູນຂ່າວສານທີ່ທັນສະໄຫມກ່ຽວກັບຜູ້ຮັກສາ
ແລະພອດໃດທີ່ຮອງຮັບໃນປັດຈຸບັນ.
BUG ບົດລາຍງານ
ຖ້າເຈົ້າພົບບັກໃນ ແກວ, ກະລຸນາສົ່ງອີເລັກໂທຣນິກໄປ [email protected]ທີ່ຢູ່ ກະລຸນາ
ປະກອບມີລະບົບປະຕິບັດການຂອງທ່ານແລະການແກ້ໄຂຂອງຕົນ, ສະບັບຂອງ ແກວ (ຈາກ ແກວ - ການປ່ຽນແປງ),
C compiler ທີ່ທ່ານໃຊ້ເພື່ອລວບລວມມັນ, ແລະໂຄງການທົດສອບແລະຂໍ້ມູນທີ່ມີຂະຫນາດນ້ອຍເທົ່າກັບ
ເປັນໄປໄດ້ສໍາລັບການແຜ່ພັນຂອງບັນຫາ.
ກ່ອນທີ່ຈະສົ່ງລາຍງານຂໍ້ຜິດພາດ, ກະລຸນາເຮັດສິ່ງຕໍ່ໄປນີ້. ກ່ອນອື່ນ ໝົດ, ກວດເບິ່ງວ່າທ່ານມີ
ສະບັບລ້າສຸດຂອງ ແກວ. ແມງໄມ້ຈໍານວນຫຼາຍ (ປົກກະຕິແລ້ວແມ່ນຄວາມອ່ອນໄຫວ) ຖືກແກ້ໄຂໃນແຕ່ລະການປ່ອຍ,
ແລະຖ້າທ່ານລ້າສະໄຫມ, ບັນຫາອາດຈະໄດ້ຮັບການແກ້ໄຂແລ້ວ. ອັນທີສອງ, ກະລຸນາເບິ່ງ
ຖ້າຫາກວ່າການຕັ້ງຄ່າສະພາບແວດລ້ອມຕົວປ່ຽນແປງ LC_ALL to LC_ALL=C ເຮັດໃຫ້ສິ່ງທີ່ຈະປະຕິບັດຕາມທີ່ທ່ານ
ຄາດຫວັງ. ຖ້າເປັນດັ່ງນັ້ນ, ມັນເປັນບັນຫາທ້ອງຖິ່ນ, ແລະອາດຈະເປັນຫຼືອາດຈະບໍ່ເປັນແມງໄມ້. ສຸດທ້າຍ, ກະລຸນາ
ອ່ານຫນ້າຜູ້ຊາຍນີ້ແລະຄູ່ມືການອ້າງອິງຢ່າງລະມັດລະວັງເພື່ອໃຫ້ແນ່ໃຈວ່າສິ່ງທີ່ທ່ານຄິດວ່າເປັນ
bug ກໍ່ແມ່ນ, ແທນທີ່ຈະເປັນພຽງແຕ່ quirk ໃນພາສາ.
ບໍ່ວ່າເຈົ້າເຮັດຫຍັງ, ເຮັດ ບໍ່ ປະກາດລາຍງານຂໍ້ຜິດພາດໃນ comp.lang.awkທີ່ຢູ່ ໃນຂະນະທີ່ ແກວ ການພັດທະນາ
ເປັນບາງໂອກາດອ່ານກຸ່ມຂ່າວນີ້, ປະກາດລາຍງານ bug ມີວິທີທີ່ບໍ່ຫນ້າເຊື່ອຖືໃນການລາຍງານ
ແມງໄມ້. ແທນທີ່ຈະ, ກະລຸນາໃຊ້ທີ່ຢູ່ອີເມວອີເລັກໂທຣນິກທີ່ລະບຸໄວ້ຂ້າງເທິງ. ແທ້ໆ.
ຖ້າຫາກວ່າທ່ານກໍາລັງໃຊ້ GNU / Linux ຫຼືລະບົບທີ່ອີງໃສ່ BSD, ທ່ານອາດຈະຕ້ອງການທີ່ຈະສົ່ງບົດລາຍງານຂໍ້ບົກຜ່ອງກັບ
ຜູ້ຂາຍການແຜ່ກະຈາຍຂອງທ່ານ. ມັນດີ, ແຕ່ກະລຸນາສົ່ງສໍາເນົາໃຫ້ເຈົ້າຫນ້າທີ່
ທີ່ຢູ່ອີເມວເຊັ່ນດຽວກັນ, ນັບຕັ້ງແຕ່ບໍ່ມີການຮັບປະກັນວ່າການລາຍງານ bug ຈະຖືກສົ່ງຕໍ່ໄປ
ໄດ້ ແກວ ຜູ້ຮັກສາ.
ໃຊ້ gawk ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net