ຮຽນຮູ້ວິທີ ນຳ ໃຊ້ຕົວປ່ຽນແປງ Awk ທີ່ມີໃນຕົວ - ພາກ 10


ໃນເວລາທີ່ພວກເຮົາຄົ້ນພົບພາກສ່ວນຂອງຄຸນລັກສະນະ Awk, ໃນສ່ວນຂອງຊຸດນີ້, ພວກເຮົາຈະຕ້ອງຍ່າງຜ່ານແນວຄວາມຄິດຂອງຕົວແປທີ່ມີຢູ່ໃນ Awk. ມັນມີສອງຕົວແປທີ່ທ່ານສາມາດໃຊ້ໃນ Awk, ເຫຼົ່ານີ້ແມ່ນ; ຕົວແປທີ່ ກຳ ນົດໂດຍຜູ້ໃຊ້, ເຊິ່ງພວກເຮົາໄດ້ກວມເອົາໃນພາກທີ 8 ແລະຕົວແປທີ່ສ້າງມາ.

ຕົວແປທີ່ມີຕົວຢູ່ໃນຕົວມີຄ່າທີ່ໄດ້ ກຳ ນົດໄວ້ແລ້ວໃນ Awk, ແຕ່ພວກເຮົາຍັງສາມາດປ່ຽນແປງຄ່າຕ່າງໆເຫຼົ່ານັ້ນຢ່າງລະມັດລະວັງ, ຕົວແປທີ່ມີຢູ່ໃນນັ້ນລວມມີ:

<

  • FILENAME : ຊື່ເອກະສານປ້ອນຂໍ້ມູນໃນປະຈຸບັນ (ຢ່າປ່ຽນຊື່ຕົວແປ)
  • FR : ຈຳ ນວນສາຍເຂົ້າປັດຈຸບັນ (ນັ້ນແມ່ນສາຍເຂົ້າ 1, 2, 3 …ອື່ນໆ, ບໍ່ຕ້ອງປ່ຽນຊື່ຕົວແປ)
  • NF : ຈຳ ນວນຂໍ້ມູນທີ່ຢູ່ໃນສາຍປັດຈຸບັນ (ບໍ່ຕ້ອງປ່ຽນຊື່ຕົວແປ)
  • OFS : ເຄື່ອງແຍກເຂດຜົນຜະລິດ
  • FS : ເຄື່ອງແຍກເຂດປ້ອນຂໍ້ມູນ
  • ORS : ເຄື່ອງແຍກບັນທຶກຜົນຜະລິດ
  • RS : ເຄື່ອງແຍກບັນທຶກການປ້ອນຂໍ້ມູນ
  • ໃຫ້ພວກເຮົາ ດຳ ເນີນການເພື່ອສະແດງໃຫ້ເຫັນການ ນຳ ໃຊ້ຕົວແປ Awk ທີ່ມີໃນຕົວຢູ່ຂ້າງເທິງ:

    ເພື່ອອ່ານຊື່ໄຟລ໌ຂອງເອກະສານການປ້ອນຂໍ້ມູນໃນປະຈຸບັນ, ທ່ານສາມາດໃຊ້ຕົວແປທີ່ມີຕົວສ້າງທີ່ມີຢູ່ໃນລະຫັດດັ່ງນີ້:

    $ awk ' { print FILENAME } ' ~/domains.txt 
    

    ທ່ານຈະຮູ້ວ່າ, ຊື່ filename ຖືກພິມອອກ ສຳ ລັບແຕ່ລະສາຍເຂົ້າ, ນັ້ນແມ່ນພຶດຕິ ກຳ ເລີ່ມຕົ້ນຂອງ Awk ເມື່ອທ່ານໃຊ້ຕົວແປ FILENAME ກໍ່ສ້າງໃນຕົວປ່ຽນແປງ.

    ການໃຊ້ລະຫັດ NR ເພື່ອນັບ ຈຳ ນວນເສັ້ນ (ບັນທຶກ) ໃນເອກະສານປ້ອນຂໍ້ມູນ, ຈົ່ງຈື່ໄວ້ວ່າ, ມັນຍັງນັບແຖວວ່າງໄວ້, ດັ່ງທີ່ພວກເຮົາຈະເຫັນໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້.

    ໃນເວລາທີ່ພວກເຮົາເບິ່ງເອກະສານ domains.txt ໂດຍໃຊ້ ຄຳ ສັ່ງແມວ, ມັນມີ 14 ສາຍດ້ວຍຂໍ້ຄວາມແລະ 2 ເສັ້ນຫວ່າງ:

    $ cat ~/domains.txt
    
    $ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt 
    

    ເພື່ອນັບ ຈຳ ນວນທົ່ງນາທີ່ຢູ່ໃນບັນທຶກຫລືແຖວ, ພວກເຮົາໃຊ້ຕົວແປ NR ທີ່ມີຕົວແປດັ່ງຕໍ່ໄປນີ້:

    $ cat ~/names.txt
    
    $ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
    

    ຖັດໄປ, ທ່ານຍັງສາມາດ ກຳ ນົດຕົວແຍກພາກສະ ໜາມ ປ້ອນຂໍ້ມູນໂດຍໃຊ້ຕົວແປທີ່ມີຕົວຕັ້ງຕົວສ້າງ FS , ມັນຈະ ກຳ ນົດວິທີການ Awk ແບ່ງສາຍປ້ອນຂໍ້ມູນເຂົ້າໃນທົ່ງນາ.

    ຄ່າເລີ່ມຕົ້ນ ສຳ ລັບ FS ແມ່ນພື້ນທີ່ແລະແທັບ, ແຕ່ພວກເຮົາສາມາດປ່ຽນຄ່າ FS ກັບຕົວລະຄອນໃດ ໜຶ່ງ ທີ່ຈະແນະ ນຳ Awk ໃຫ້ແບ່ງສາຍເຂົ້າ.

    ມີສອງວິທີການເພື່ອເຮັດສິ່ງນີ້:

    <

  • ວິທີການ ໜຶ່ງ ແມ່ນການ ນຳ ໃຊ້ຕົວແປທີ່ມີຕົວແປໃນຕົວ FS
  • ແລະທີສອງແມ່ນເພື່ອຂໍຕົວເລືອກ -F Awk
  • ພິຈາລະນາເອກະສານ/etc/passwd ໃນລະບົບ Linux, ຂົງເຂດຕ່າງໆໃນເອກະສານນີ້ແບ່ງອອກໂດຍໃຊ້ຕົວອັກສອນ : , ດັ່ງນັ້ນພວກເຮົາສາມາດລະບຸວ່າມັນເປັນຕົວແຍກພາກສະຫນາມວັດສະດຸປ້ອນ ໃໝ່ ເມື່ອພວກເຮົາຕ້ອງການກັ່ນຕອງບາງສະ ໜາມ ໃນຕົວຢ່າງຕໍ່ໄປນີ້:

    ພວກເຮົາສາມາດໃຊ້ຕົວເລືອກ -F ດັ່ງຕໍ່ໄປນີ້:

    $ awk -F':' '{ print $1, $4 ;}' /etc/passwd
    

    ທາງເລືອກອື່ນ, ພວກເຮົາຍັງສາມາດໃຊ້ປະໂຫຍດຈາກຕົວປ່ຽນແປງທີ່ມີຢູ່ໃນຕົວລະຫັດດັ່ງລຸ່ມນີ້:

    $ awk ' BEGIN {  FS=“:” ; }  { print $1, $4  ; } ' /etc/passwd
    

    ເພື່ອ ກຳ ນົດຕົວແຍກພາກສະ ໜາມ ຜົນຜະລິດ, ໃຫ້ໃຊ້ຕົວແປທີ່ມີຕົວສ້າງຕັ້ງຂື້ນ, ມັນຈະ ກຳ ນົດວິທີການທີ່ຊ່ອງຂໍ້ມູນຜົນຜະລິດຈະແຍກອອກໂດຍໃຊ້ຕົວລະຄອນທີ່ພວກເຮົາໃຊ້ໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:

    $ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
    

    ໃນພາກທີ 10 ນີ້, ພວກເຮົາໄດ້ຄົ້ນຄິດກ່ຽວກັບການ ນຳ ໃຊ້ຕົວແປ Awk ທີ່ສ້າງມາພ້ອມກັບຄ່າທີ່ໄດ້ ກຳ ນົດໄວ້ກ່ອນ. ແຕ່ພວກເຮົາຍັງສາມາດປ່ຽນຄຸນຄ່າເຫຼົ່ານີ້, ເຖິງແມ່ນວ່າ, ມັນບໍ່ໄດ້ຖືກແນະ ນຳ ໃຫ້ເຮັດດັ່ງນັ້ນເວັ້ນເສຍແຕ່ວ່າທ່ານຈະຮູ້ວ່າທ່ານ ກຳ ລັງເຮັດຫຍັງ, ໂດຍມີຄວາມເຂົ້າໃຈຢ່າງພຽງພໍ.

    ຫຼັງຈາກນີ້, ພວກເຮົາຈະຕ້ອງກ້າວ ໜ້າ ເພື່ອປົກຄຸມວິທີທີ່ພວກເຮົາສາມາດໃຊ້ຕົວແປຫອຍໃນການ ດຳ ເນີນງານ ຄຳ ສັ່ງ Awk, ດັ່ງນັ້ນ, ຈົ່ງເຊື່ອມຕໍ່ກັບ Tecmint.