ວິທີການໃຊ້ຜູ້ປະຕິບັດການປຽບທຽບກັບ Awk ໃນ Linux - ພາກທີ 4


ເມື່ອປະຕິບັດກັບຄ່າຕົວເລກຫລືສາຍໃນແຖວຂອງຂໍ້ຄວາມ, ການກັ່ນຕອງຂໍ້ຄວາມຫລືສາຍຕ່າງໆໂດຍໃຊ້ຕົວປະຕິບັດການປຽບທຽບແມ່ນມີປະໂຫຍດ ສຳ ລັບຜູ້ໃຊ້ ຄຳ ສັ່ງ Awk.

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

ຜູ້ປະຕິບັດການປຽບທຽບໃນ Awk ຖືກນໍາໃຊ້ເພື່ອປຽບທຽບມູນຄ່າຂອງຕົວເລກຫຼືສາຍແລະພວກມັນປະກອບມີດັ່ງຕໍ່ໄປນີ້:

<

  • > - ໃຫຍ່ກວ່າ
  • < - ນ້ອຍກວ່າ
  • > = - ໃຫຍ່ກວ່າຫຼືເທົ່າກັບ
  • <= - ນ້ອຍກວ່າຫຼືເທົ່າກັບ
  • == - ເທົ່າກັບ
  • ! = - ບໍ່ເທົ່າກັບ
  • some_value ~/pattern/ - ແທ້ຈິງຖ້າວ່າບາງຂໍ້ມູນກົງກັບຮູບແບບ
  • some_value! ~/pattern/ - ເປັນຄວາມຈິງຖ້າ some_value ບໍ່ກົງກັບຮູບແບບ
  • ຕອນນີ້ພວກເຮົາໄດ້ເບິ່ງຜູ້ປະຕິບັດການປຽບທຽບຕ່າງໆໃນ Awk, ໃຫ້ພວກເຮົາເຂົ້າໃຈພວກເຂົາດີກວ່າໂດຍໃຊ້ຕົວຢ່າງ.

    ໃນຕົວຢ່າງນີ້, ພວກເຮົາມີເອກະສານທີ່ມີຊື່ວ່າ food_list.txt ເຊິ່ງແມ່ນບັນຊີລາຍຊື່ການຊື້ເຄື່ອງ ສຳ ລັບອາຫານທີ່ແຕກຕ່າງກັນແລະຂ້ອຍຕ້ອງການ ໝາຍ ທຸງອາຫານທີ່ມີ ຈຳ ນວນ ໜ້ອຍ ກວ່າຫຼືເທົ່າກັບ 20 ໂດຍການເພີ່ມ (**) ໃນຕອນທ້າຍຂອງແຕ່ລະເສັ້ນ.

    No      Item_Name               Quantity        Price
    1       Mangoes                    45           $3.45
    2       Apples                     25           $2.45
    3       Pineapples                 5            $4.45
    4       Tomatoes                   25           $3.45
    5       Onions                     15           $1.45
    6       Bananas                    30           $3.45
    

    syntax ທົ່ວໄປ ສຳ ລັບຜູ້ ນຳ ໃຊ້ປຽບທຽບໃນ Awk ແມ່ນ:

    # expression { actions; }
    

    ເພື່ອບັນລຸເປົ້າ ໝາຍ ຂ້າງເທິງ, ຂ້ອຍຈະຕ້ອງ ດຳ ເນີນການ ຄຳ ສັ່ງດັ່ງລຸ່ມນີ້:

    # awk '$3 <= 30 { printf "%s\t%s\n", $0,"**" ; } $3 > 30 { print $0 ;}' food_list.txt
    
    No	Item_Name`		Quantity	Price
    1	Mangoes	      		   45		$3.45
    2	Apples			   25		$2.45	**
    3	Pineapples		   5		$4.45	**
    4	Tomatoes		   25		$3.45	**
    5	Onions			   15           $1.45	**
    6	Bananas			   30           $3.45	**
    

    ໃນຕົວຢ່າງຂ້າງເທິງ, ມີສອງສິ່ງທີ່ ສຳ ຄັນທີ່ເກີດຂື້ນ:

    <

  • ສຳ ນວນ ທຳ ອິດ {ການກະ ທຳ; } ລວມ, $3 <= 30 {printf“% s\t% s\n”, $0,” **”; } ພິມອອກສາຍທີ່ມີປະລິມານ ໜ້ອຍ ກວ່າຫຼືເທົ່າກັບ 30 ແລະເພີ່ມ a (**) ຢູ່ໃນຕອນທ້າຍຂອງແຕ່ລະເສັ້ນ. ຄຸນຄ່າຂອງປະລິມານແມ່ນເຂົ້າເຖິງໂດຍໃຊ້ຕົວປ່ຽນພາກສະ ໜາມ $3.
  • ສຳ ນວນທີສອງ {ການກະ ທຳ; } ການປະສົມປະສານ, $3> 30 {ພິມ $0;} ພິມເສັ້ນທີ່ບໍ່ປ່ຽນແປງເນື່ອງຈາກ ຈຳ ນວນຂອງມັນສູງກວ່າ 30 ຈາກນັ້ນ.
  • ຕົວຢ່າງ ໜຶ່ງ ອີກ:

    # awk '$3 <= 20 { printf "%s\t%s\n", $0,"TRUE" ; } $3 > 20  { print $0 ;} ' food_list.txt 
    
    No	Item_Name		Quantity	Price
    1	Mangoes			   45		$3.45
    2	Apples			   25		$2.45
    3	Pineapples		   5		$4.45	TRUE
    4	Tomatoes		   25		$3.45
    5	Onions			   15           $1.45	TRUE
    6       Bananas	                   30           $3.45
    

    ໃນຕົວຢ່າງນີ້, ພວກເຮົາຕ້ອງການຊີ້ບອກສາຍທີ່ມີປະລິມານ ໜ້ອຍ ຫລືເທົ່າກັບ 20 ກັບ ຄຳ ວ່າ (TRUE) ໃນຕອນທ້າຍ.

    ບົດສະຫຼຸບ

    ນີ້ແມ່ນ ຄຳ ແນະ ນຳ ແນະ ນຳ ສຳ ລັບຜູ້ປະຕິບັດການປຽບທຽບໃນ Awk, ດັ່ງນັ້ນທ່ານ ຈຳ ເປັນຕ້ອງລອງທາງເລືອກອື່ນອີກຫລາຍຢ່າງແລະຄົ້ນພົບຫລາຍຂື້ນ.

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