ວິທີໃຊ້ Command ຕໍ່ໄປກັບ Awk ໃນ Linux - ພາກທີ 6


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

ຄຳ ສັ່ງ ຕໍ່ໄປ ຊ່ວຍໃຫ້ທ່ານສາມາດປ້ອງກັນການປະຕິບັດສິ່ງທີ່ຂ້ອຍ ໝາຍ ເຖິງເປັນຂັ້ນຕອນການສູນເສຍເວລາໃນການປະຕິບັດ ຄຳ ສັ່ງ.

ເພື່ອເຂົ້າໃຈວ່າມັນເຮັດວຽກໄດ້ແນວໃດ, ໃຫ້ພວກເຮົາພິຈາລະນາເອກະສານທີ່ມີຊື່ວ່າ food_list.txt ທີ່ມີລັກສະນະດັ່ງນີ້:

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

ພິຈາລະນາແລ່ນ ຄຳ ສັ່ງຕໍ່ໄປນີ້ເຊິ່ງຈະ ໝາຍ ທຸງອາຫານທີ່ມີ ຈຳ ນວນ ໜ້ອຍ ກວ່າຫຼືເທົ່າກັບ 20 ພ້ອມດ້ວຍເຄື່ອງ ໝາຍ (*) ຢູ່ປາຍຂອງແຕ່ລະເສັ້ນ:

# awk '$4 <= 20 { printf "%s\t%s\n", $0,"*" ; } $4 > 20 { print $0 ;} ' food_list.txt 

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

ຄຳ ສັ່ງຂ້າງເທິງຕົວຈິງເຮັດວຽກດັ່ງຕໍ່ໄປນີ້:

<

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

    ສະນັ້ນບໍ່ ຈຳ ເປັນຕ້ອງປະຕິບັດການສະແດງອອກຄັ້ງທີສອງ, $4> 20 ອີກເທື່ອ ໜຶ່ງ ຫຼັງຈາກທີ່ໄດ້ພິມເສັ້ນທຸງແລ້ວທີ່ໄດ້ຖືກພິມອອກໂດຍໃຊ້ ສຳ ນວນ ທຳ ອິດ.

    ເພື່ອຈັດການກັບບັນຫານີ້, ທ່ານຕ້ອງໃຊ້ ຄຳ ສັ່ງ ຖັດໄປ ດັ່ງຕໍ່ໄປນີ້:

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

    ຫຼັງຈາກສາຍເຂົ້າດຽວຖືກພິມອອກໂດຍໃຊ້ $4 <= 20 {printf "% s\t% s\n", $0, "*"; ຕໍ່ໄປ; } , ຄຳ ສັ່ງ ຖັດໄປ ລວມມີຈະຊ່ວຍຂ້າມການສະແດງອອກທີ່ສອງ $4> 20 {ພິມ $0;} , ດັ່ງນັ້ນການປະຕິບັດຈະ ສາຍເຂົ້າຕໍ່ໄປໂດຍບໍ່ຕ້ອງເສຍເວລາໃນການກວດກາເບິ່ງວ່າ ຈຳ ນວນນັ້ນສູງກວ່າ 20 ຫລືບໍ່.

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

    ຫວັງວ່າທ່ານຈະພົບເຫັນວິທີການ ນຳ ພາທີ່ເປັນປະໂຫຍດແລະທ່ານສາມາດຂຽນຄວາມຄິດຂອງທ່ານເປັນລາຍລັກອັກສອນໂດຍການປະກອບ ຄຳ ຄິດເຫັນໃນສ່ວນ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.