วิธีใช้ตัวดำเนินการเปรียบเทียบกับ Awk ใน Linux - ตอนที่ 4
เมื่อต้องจัดการกับค่าตัวเลขหรือสตริงในบรรทัดข้อความ การกรองข้อความหรือสตริงโดยใช้ตัวดำเนินการเปรียบเทียบจะมีประโยชน์สำหรับผู้ใช้คำสั่ง Awk
ในส่วนนี้ของซีรีส์ Awk เราจะมาดูกันว่าคุณสามารถกรองข้อความหรือสตริงโดยใช้ตัวดำเนินการเปรียบเทียบได้อย่างไร หากคุณเป็นโปรแกรมเมอร์ คุณจะต้องคุ้นเคยกับตัวดำเนินการเปรียบเทียบอยู่แล้ว แต่สำหรับผู้ที่ไม่ใช่ ให้ฉันอธิบายในส่วนด้านล่าง
ตัวดำเนินการเปรียบเทียบใน Awk คืออะไร
ตัวดำเนินการเปรียบเทียบใน Awk ใช้เพื่อเปรียบเทียบค่าของตัวเลขหรือสตริง โดยมีดังต่อไปนี้:
>
– มากกว่า- <รหัส>< – น้อยกว่า
>=
– มากกว่าหรือเท่ากับ<=
– น้อยกว่าหรือเท่ากับ==
– เท่ากับ!=
– ไม่เท่ากับsome_value ~/pattern/
– เป็นจริงหาก some_value ตรงกับรูปแบบ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
ไวยากรณ์ทั่วไปสำหรับการใช้ตัวดำเนินการเปรียบเทียบใน 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 **
ในตัวอย่างข้างต้น มีสิ่งสำคัญสองประการที่เกิดขึ้น:
- นิพจน์แรก { action ; ชุดค่าผสม, $3 <= 30 { printf “%s\t%s\n”, $0,”**” ; } พิมพ์บรรทัดที่มีปริมาณน้อยกว่าหรือเท่ากับ 30 และเพิ่ม (**) ที่ท้ายแต่ละบรรทัด เข้าถึงค่าของปริมาณได้โดยใช้ตัวแปรฟิลด์ $3
- นิพจน์ที่สอง { action ; } ชุดค่าผสม $3 > 30 { print $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 ซึ่งฉันจะพาคุณไปรู้จักกับนิพจน์ประสม