ວິທີການໃຊ້ Awk ແລະການສະແດງອອກເປັນປະ ຈຳ ເພື່ອກັ່ນຕອງຕົວ ໜັງ ສືຫລືສະຕິງໃນແຟ້ມ
ເມື່ອພວກເຮົາ ດຳ ເນີນການ ຄຳ ສັ່ງບາງຢ່າງໃນ Unix/Linux ເພື່ອອ່ານຫລືແກ້ໄຂຂໍ້ຄວາມຈາກສາຍຫລືເອກະສານ, ພວກເຮົາມັກຈະພະຍາຍາມກັ່ນຕອງຜົນຜະລິດໃຫ້ພາກສ່ວນທີ່ສົນໃຈ. ນີ້ແມ່ນບ່ອນທີ່ການໃຊ້ ສຳ ນວນປົກກະຕິເຂົ້າມາໃຊ້ໄດ້ງ່າຍ.
ສຳ ນວນປົກກະຕິສາມາດຖືກ ກຳ ນົດເປັນສາຍເຊືອກທີ່ສະແດງເຖິງ ລຳ ດັບຂອງຕົວອັກສອນຫລາຍໆຢ່າງ. ໜຶ່ງ ໃນສິ່ງທີ່ ສຳ ຄັນທີ່ສຸດກ່ຽວກັບການສະແດງອອກເປັນປະ ຈຳ ແມ່ນວ່າພວກເຂົາອະນຸຍາດໃຫ້ທ່ານສາມາດກັ່ນຕອງຜົນຜະລິດຂອງ ຄຳ ສັ່ງຫລືເອກະສານ, ດັດແກ້ສ່ວນຂອງເອກະສານຂໍ້ຄວາມຫຼືການຕັ້ງຄ່າແລະອື່ນໆ.
ສຳ ນວນປົກກະຕິແມ່ນ:
<
(.)
ມັນກົງກັບຕົວອັກສອນໃດ ໜຶ່ງ ຍົກເວັ້ນເສັ້ນ ໃໝ່. (*)
ມັນກົງກັບສູນຫຼືມີຫຼາຍກວ່າຕົວອັກສອນທີ່ຢູ່ເບື້ອງຕົ້ນກ່ອນມັນ. [ຕົວອັກສອນ]
ມັນກົງກັບຕົວອັກສອນໃດ ໜຶ່ງ ທີ່ລະບຸໄວ້ໃນຕົວອັກສອນ, ໜຶ່ງ ຍັງສາມາດໃຊ້ ຄຳ ສັ່ງ (-)
ເພື່ອ ໝາຍ ເຖິງຊ່ວງ ຂອງຕົວອັກສອນເຊັ່ນ [af]
, [1-5]
, ແລະອື່ນໆ. ^
ມັນກົງກັບຈຸດເລີ່ມຕົ້ນຂອງແຖວໃນແຟ້ມເອກະສານ. $
ກົງກັບຈຸດສຸດທ້າຍຂອງເອກະສານ. \
ມັນແມ່ນຕົວລະຄອນ ໜີ. ເພື່ອທີ່ຈະກັ່ນຕອງຂໍ້ຄວາມ, ທ່ານຕ້ອງໄດ້ໃຊ້ເຄື່ອງມືກັ່ນຕອງຂໍ້ຄວາມເຊັ່ນ: ງຸ່ມງ່າມ. ທ່ານສາມາດຄິດເຖິງ awk ເປັນພາສາການຂຽນໂປແກຼມຂອງມັນເອງ. ແຕ່ ສຳ ລັບຂອບເຂດຂອງ ຄຳ ແນະ ນຳ ນີ້ໃນການ ນຳ ໃຊ້ງຸ່ມງ່າມ, ພວກເຮົາຈະກວມເອົາມັນເປັນເຄື່ອງມືການກັ່ນຕອງເສັ້ນ ຄຳ ສັ່ງງ່າຍໆ.
syntax ທົ່ວໄປຂອງ awk ແມ່ນ:
# awk 'script' filename
ບ່ອນທີ່ script
ແມ່ນຊຸດຂອງ ຄຳ ສັ່ງທີ່ເຂົ້າໃຈໂດຍງຶດງໍ້ແລະຖືກ ດຳ ເນີນການໃນແຟ້ມເອກະສານ, ຊື່ແຟ້ມ.
ມັນເຮັດວຽກໄດ້ໂດຍການອ່ານເສັ້ນທີ່ຢູ່ໃນແຟ້ມ, ເຮັດ ສຳ ເນົາເສັ້ນແລະຫຼັງຈາກນັ້ນກໍ່ປະຕິບັດສະຄິບຢູ່ໃນສາຍ. ນີ້ຖືກເຮັດຊ້ ຳ ໃນທຸກສາຍໃນເອກະສານ.
ຕົວອັກສອນ ແມ່ນຢູ່ໃນຮູບແບບ /ຮູບແບບ/ການປະຕິບັດ
ບ່ອນທີ່ຮູບແບບແມ່ນການສະແດງອອກເປັນປະ ຈຳ ແລະການກະ ທຳ ແມ່ນສິ່ງທີ່ງຸ່ມງ່າມຈະເຮັດໃນເວລາທີ່ມັນພົບຮູບແບບທີ່ຖືກມອບໃຫ້ເປັນເສັ້ນ.
ວິທີການໃຊ້ເຄື່ອງມືການກັ່ນຕອງ Awk ໃນ Linux
ໃນຕົວຢ່າງຕໍ່ໄປນີ້, ພວກເຮົາຈະສຸມໃສ່ຕົວອັກສອນ meta ທີ່ພວກເຮົາໄດ້ສົນທະນາຂ້າງເທິງພາຍໃຕ້ລັກສະນະຂອງງຸ່ມງ່າມ.
ຕົວຢ່າງຂ້າງລຸ່ມນີ້ພິມທຸກເສັ້ນໃນແຟ້ມ/etc/hosts ເພາະບໍ່ມີຮູບແບບ.
# awk '//{print}'/etc/hosts
ຂ້າພະເຈົ້າຕົວຢ່າງຂ້າງລຸ່ມນີ້, ຮູບແບບ localhost
ໄດ້ຖືກມອບໃຫ້, ດັ່ງນັ້ນ awk ຈະກົງກັບເສັ້ນທີ່ມີ localhost ຢູ່ໃນແຟ້ມ /etc/hosts
.
# awk '/localhost/{print}' /etc/hosts
ລະຫັດ (.)
ຈະກົງກັບສາຍຕ່າງໆທີ່ມີ local, localhost, localnet ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້.
ນັ້ນແມ່ນການເວົ້າ * ຂ້າພະເຈົ້າບາງຄົນມັກຊື້ c *.
# awk '/l.c/{print}' /etc/hosts
ມັນຈະກົງກັບສະຕິງທີ່ມີ localhost, localnet, ສາຍ, ຄວາມສາມາດ, ເຊັ່ນໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:
# awk '/l*c/{print}' /etc/localhost
ທ່ານຍັງຈະຮູ້ວ່າ (*)
ພະຍາຍາມເຮັດໃຫ້ທ່ານມີການຈັບຄູ່ທີ່ຍາວທີ່ສຸດເທົ່າທີ່ເປັນໄປໄດ້.
ໃຫ້ເບິ່ງໃນກໍລະນີທີ່ສະແດງໃຫ້ເຫັນນີ້, ໃຊ້ ສຳ ນວນປົກກະຕິ t * t
ຊຶ່ງ ໝາຍ ຄວາມວ່າສາຍ ຄຳ ທີ່ກົງກັບທີ່ເລີ່ມຕົ້ນດ້ວຍຕົວອັກສອນ t
ແລະສິ້ນສຸດດ້ວຍ t
ໃນເສັ້ນຂ້າງລຸ່ມນີ້:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint.
ທ່ານຈະໄດ້ຮັບຄວາມເປັນໄປໄດ້ດັ່ງຕໍ່ໄປນີ້ເມື່ອທ່ານໃຊ້ແບບ /t * t/
:
this is t this is tecmint this is tecmint, where you get t this is tecmint, where you get the best good t this is tecmint, where you get the best good tutorials, how t this is tecmint, where you get the best good tutorials, how tos, guides, t this is tecmint, where you get the best good tutorials, how tos, guides, tecmint
ແລະ (*)
ໃນ /t * t/
ຕົວອັກສອນ ທຳ ມະຊາດເຮັດໃຫ້ງຸ່ມງ່າມສາມາດເລືອກຕົວເລືອກສຸດທ້າຍ:
this is tecmint, where you get the best good tutorials, how to's, guides, tecmint
ຍົກຕົວຢ່າງທີ່ ກຳ ນົດຕົວຢ່າງ [al1]
, ທີ່ນີ້ awk ຈະກົງກັບທຸກສາຍທີ່ມີຕົວລະຫັດ ຕົວ
ຫຼື l
ຫຼື 1
ໃນເສັ້ນໃນແຟ້ມ/etc/hosts.
# awk '/[al1]/{print}' /etc/hosts
ຕົວຢ່າງຕໍ່ໄປຈະກົງກັບສາຍຕ່າງໆທີ່ເລີ່ມຕົ້ນດ້ວຍ K
ຫຼື k
ຕາມດ້ວຍ T
:
# awk '/[Kk]T/{print}' /etc/hosts
ເຂົ້າໃຈຕົວລະຄອນດ້ວຍງຸ່ມງ່າມ:
<
[0-9]
ໝາຍ ເຖິງຕົວເລກດຽວ [a-z]
ໝາຍ ຄວາມວ່າກົງກັບໂຕອັກສອນນ້ອຍໂຕດຽວ [A-Z]
ໝາຍ ຄວາມວ່າກົງກັບໂຕອັກສອນໃຫຍ່ໂຕດຽວ [a-zA-Z]
ໝາຍ ຄວາມວ່າກົງກັບຕົວອັກສອນດຽວ [a-zA-Z 0-9]
ໝາຍ ຄວາມວ່າກົງກັບຕົວອັກສອນຫຼືຕົວເລກດຽວ ໃຫ້ເບິ່ງຕົວຢ່າງຂ້າງລຸ່ມນີ້:
# awk '/[0-9]/{print}' /etc/hosts
ທຸກເສັ້ນທີ່ມາຈາກແຟ້ມ/etc/hosts ມີຢ່າງ ໜ້ອຍ ມີໂຕເລກດຽວ [0-9]
ໃນຕົວຢ່າງຂ້າງເທິງ.
ມັນກົງກັບທຸກສາຍທີ່ເລີ່ມຕົ້ນດ້ວຍຮູບແບບທີ່ສະ ໜອງ ໄວ້ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:
# awk '/^fe/{print}' /etc/hosts # awk '/^ff/{print}' /etc/hosts
ມັນກົງກັບທຸກເສັ້ນທີ່ສິ້ນສຸດດ້ວຍຮູບແບບທີ່ສະ ໜອງ ໃຫ້:
# awk '/ab$/{print}' /etc/hosts # awk '/ost$/{print}' /etc/hosts # awk '/rs$/{print}' /etc/hosts
ມັນຊ່ວຍໃຫ້ທ່ານສາມາດເອົາຕົວລະຄອນຕິດຕາມມັນເປັນຕົວ ໜັງ ສືທີ່ຕ້ອງເວົ້າໃຫ້ພິຈາລະນາຄືກັນກັບມັນ.
ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້, ຄຳ ສັ່ງ ທຳ ອິດພິມທຸກເສັ້ນໃນເອກະສານ, ຄຳ ສັ່ງທີສອງບໍ່ມີຫຍັງພິມເພາະຂ້ອຍຕ້ອງການກົງກັບເສັ້ນທີ່ມີ $25.00, ແຕ່ບໍ່ມີຕົວອັກສອນຫລົບ ໜີ ຖືກໃຊ້.
ຄຳ ສັ່ງທີສາມແມ່ນຖືກຕ້ອງເນື່ອງຈາກມີລັກສະນະຫລົບ ໜີ ໄດ້ຖືກ ນຳ ໃຊ້ເພື່ອອ່ານ $ຕາມທີ່ຂຽນ.
# awk '//{print}' deals.txt # awk '/$25.00/{print}' deals.txt # awk '/\$25.00/{print}' deals.txt
ບົດສະຫຼຸບ
ນັ້ນບໍ່ແມ່ນທັງ ໝົດ ທີ່ມີເຄື່ອງມືກັ່ນຕອງເສັ້ນ ຄຳ ສັ່ງ awk, ຕົວຢ່າງຂ້າງເທິງນີ້ແມ່ນການ ດຳ ເນີນງານພື້ນຖານຂອງ awk. ໃນພາກຕໍ່ໄປພວກເຮົາຈະຕ້ອງກ້າວ ໜ້າ ກ່ຽວກັບວິທີການ ນຳ ໃຊ້ຄຸນລັກສະນະທີ່ສັບສົນຂອງງຸ່ມງ່າມ. ຂໍຂອບໃຈ ສຳ ລັບການອ່ານຜ່ານແລະ ສຳ ລັບການເພີ່ມເຕີມຫຼືຄວາມກະຈ່າງແຈ້ງ, ໃຫ້ ຄຳ ເຫັນໃນພາກ ຄຳ ເຫັນ.