ວິທີການໃຊ້ Awk ໃນການພິມຟາຍແລະຖັນໃນເອກະສານ
ໃນພາກນີ້ຂອງຊຸດ ຄຳ ສັ່ງ Linux Awk ຂອງພວກເຮົາ, ພວກເຮົາຈະຕ້ອງໄດ້ເບິ່ງທີ່ ໜຶ່ງ ຂອງຄຸນລັກສະນະທີ່ ສຳ ຄັນທີ່ສຸດຂອງ Awk, ເຊິ່ງແມ່ນການດັດແກ້ພາກສະ ໜາມ.
ມັນເປັນສິ່ງທີ່ດີທີ່ຈະຮູ້ວ່າ Awk ແບ່ງສາຍເຂົ້າທີ່ຖືກຈັດຫາໃຫ້ມັນເຂົ້າໄປໃນທົ່ງນາໂດຍອັດຕະໂນມັດ, ແລະພາກສະ ໜາມ ສາມາດຖືກ ກຳ ນົດເປັນຕົວອັກສອນທີ່ແຍກອອກຈາກທົ່ງນາອື່ນໂດຍເຄື່ອງແຍກພາກສະ ໜາມ.
ຖ້າທ່ານຄຸ້ນເຄີຍກັບ Unix/Linux ຫຼືເຮັດໂປແກມ bash shell, ທ່ານຄວນຮູ້ວ່າຕົວແຍກຂໍ້ມູນພາຍໃນ (IFS) ແມ່ນຫຍັງ. IFS ເລີ່ມຕົ້ນໃນ Awk ແມ່ນແທັບແລະພື້ນທີ່.
ນີ້ແມ່ນວິທີທີ່ຄວາມຄິດຂອງການແຍກພາກສະ ໜາມ ເຮັດວຽກໃນ Awk: ເມື່ອມັນພົບກັບເສັ້ນປ້ອນຂໍ້ມູນ, ຕາມ IFS ທີ່ໄດ້ ກຳ ນົດໄວ້, ຕົວອັກສອນ ທຳ ອິດແມ່ນພາກສະ ໜາມ ໜຶ່ງ, ເຊິ່ງສາມາດເຂົ້າເຖິງໄດ້ໂດຍໃຊ້ $1, ຊຸດຕົວອັກສອນທີສອງແມ່ນພາກສະ ໜາມ ສອງ, ເຊິ່ງ ສາມາດເຂົ້າເບິ່ງໄດ້ໂດຍໃຊ້ $2, ຊຸດທີສາມຂອງຕົວລະຄອນແມ່ນພາກສະ ໜາມ ສາມ, ເຊິ່ງສາມາດເຂົ້າເຖິງໄດ້ໂດຍໃຊ້ $3 ແລະອື່ນໆຈົນເຖິງຊຸດຂອງຕົວອັກສອນສຸດທ້າຍ.
ເພື່ອເຂົ້າໃຈການດັດແກ້ພາກສະ ໜາມ Awk ທີ່ດີກວ່ານີ້, ພວກເຮົາມາເບິ່ງຕົວຢ່າງຂ້າງລຸ່ມນີ້:
ຕົວຢ່າງ 1: ຂ້ອຍໄດ້ສ້າງເອກະສານຂໍ້ຄວາມທີ່ມີຊື່ວ່າ tecmintinfo.txt.
# vi tecmintinfo.txt # cat tecmintinfo.txt
ຈາກເສັ້ນ ຄຳ ສັ່ງຂ້ອຍພະຍາຍາມພິມ ໜ້າ ທຳ ອິດ, ທີສອງແລະທີສາມຈາກແຟ້ມເອກະສານ tecmintinfo.txt ໂດຍໃຊ້ ຄຳ ສັ່ງດ້ານລຸ່ມ:
$ awk '//{print $1 $2 $3 }' tecmintinfo.txt TecMint.comisthe
ຈາກຜົນໄດ້ຮັບຂ້າງເທິງ, ທ່ານສາມາດເຫັນໄດ້ວ່າຕົວອັກສອນຈາກສາມຂົງເຂດ ທຳ ອິດຖືກພິມໂດຍອີງໃສ່ IFS ທີ່ໄດ້ ກຳ ນົດວ່າແມ່ນຊ່ອງໃດ:
<
$1
. $3
. ຖ້າທ່ານໄດ້ສັງເກດເຫັນໃນຜົນຜະລິດທີ່ພິມແລ້ວ, ຄ່າຂອງພາກສະ ໜາມ ບໍ່ໄດ້ຖືກແຍກອອກຈາກກັນແລະນີ້ແມ່ນວິທີການພິມແບບ ທຳ ມະດາ.
ເພື່ອເບິ່ງຜົນໄດ້ຮັບຢ່າງຈະແຈ້ງແລະມີຊ່ອງຫວ່າງລະຫວ່າງຄ່າຂອງພາກສະ ໜາມ, ທ່ານ ຈຳ ເປັນຕ້ອງເພີ່ມຕົວປະຕິບັດການ (,)
ດັ່ງຕໍ່ໄປນີ້:
$ awk '//{print $1, $2, $3; }' tecmintinfo.txt TecMint.com is the
ສິ່ງ ສຳ ຄັນ ໜຶ່ງ ທີ່ຄວນສັງເກດແລະ ຈຳ ໄວ້ສະ ເໝີ ແມ່ນການ ນຳ ໃຊ້ ($)
ໃນ Awk ແມ່ນແຕກຕ່າງຈາກການ ນຳ ໃຊ້ໃນການຂຽນແກະ.
ພາຍໃຕ້ສະຄິບແກະ ($)
ຖືກໃຊ້ເພື່ອເຂົ້າເຖິງມູນຄ່າຂອງຕົວປ່ຽນຕ່າງໆໃນຂະນະທີ່ຢູ່ໃນ Awk ($)
ມັນຖືກໃຊ້ໃນເວລາເຂົ້າເຖິງເນື້ອໃນຂອງຂໍ້ມູນແຕ່ບໍ່ແມ່ນ ສຳ ລັບການເຂົ້າເຖິງ ມູນຄ່າຂອງຕົວແປ.
ຕົວຢ່າງທີ 2: ໃຫ້ພວກເຮົາພິຈາລະນາອີກຕົວຢ່າງ ໜຶ່ງ ໂດຍໃຊ້ແຟ້ມເອກະສານທີ່ປະກອບມີຫລາຍສາຍທີ່ເອີ້ນວ່າ my_shoping.list.
No Item_Name Unit_Price Quantity Price 1 Mouse #20,000 1 #20,000 2 Monitor #500,000 1 #500,000 3 RAM_Chips #150,000 2 #300,000 4 Ethernet_Cables #30,000 4 #120,000
ບອກວ່າທ່ານຕ້ອງການພິມພຽງແຕ່ Unit_Price
ຂອງແຕ່ລະລາຍການທີ່ຢູ່ໃນລາຍການຊື້ເຄື່ອງ, ທ່ານຈະຕ້ອງ ດຳ ເນີນການ ຄຳ ສັ່ງດັ່ງລຸ່ມນີ້:
$ awk '//{print $2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
Awk ຍັງມີ ຄຳ ສັ່ງ printf
ທີ່ຊ່ວຍໃຫ້ທ່ານສາມາດຈັດຮູບແບບຜົນຜະລິດຂອງທ່ານໄດ້ເປັນວິທີທີ່ດີຍ້ອນວ່າທ່ານສາມາດເຫັນຜົນໄດ້ຮັບຂ້າງເທິງບໍ່ຈະແຈ້ງ.
ການໃຊ້ printf
ເພື່ອຈັດຮູບແບບຂອງ Item_Name ແລະ Unit_Price:
$ awk '//{printf "%-10s %s\n",$2, $3 }' my_shopping.txt Item_Name Unit_Price Mouse #20,000 Monitor #500,000 RAM_Chips #150,000 Ethernet_Cables #30,000
ບົດສະຫຼຸບ
ການດັດແກ້ພາກສະ ໜາມ ແມ່ນມີຄວາມ ສຳ ຄັນຫຼາຍເມື່ອ ນຳ ໃຊ້ Awk ເພື່ອກັ່ນຕອງຂໍ້ຄວາມຫລືສາຍຕ່າງໆ, ມັນຊ່ວຍໃຫ້ທ່ານໄດ້ຮັບຂໍ້ມູນໂດຍສະເພາະໃນຄໍ ລຳ ໃນບັນຊີລາຍຊື່. ແລະ ຈຳ ໄວ້ສະ ເໝີ ວ່າການໃຊ້ຕົວປະຕິບັດງານ ($)
ໃນ Awk ແມ່ນແຕກຕ່າງຈາກທີ່ຢູ່ໃນ shell scripting.
ຂ້າພະເຈົ້າຫວັງວ່າບົດຂຽນຈະເປັນປະໂຫຍດຕໍ່ທ່ານແລະ ສຳ ລັບຂໍ້ມູນເພີ່ມເຕີມທີ່ຕ້ອງການຫຼື ຄຳ ຖາມ, ທ່ານສາມາດຂຽນ ຄຳ ເຫັນໃນພາກ ຄຳ ເຫັນ.