Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

แยกสตริงใน Bash ได้อย่างง่ายดาย: คู่มือฉบับสมบูรณ์พร้อมตัวอย่างปฏิบัติ

บทความนี้จะแสดงวิธีแยกสตริงที่ตัวคั่นที่กำหนดในสคริปต์ Bash/Shell พร้อมตัวอย่าง

การแยกสตริงเป็นฟังก์ชันที่มีประโยชน์เมื่อเขียนสคริปต์ CSV (Comma Separated Values) เป็นรูปแบบที่พบบ่อยสำหรับข้อมูลออนไลน์ โดยฟิลด์ข้อมูลในตารางจะถูกคั่นด้วยเครื่องหมายจุลภาค (,)

คุณอาจต้องการแยกประโยคเป็นคำที่ช่องว่าง หรือแยกย่อหน้าเป็นประโยคที่จุด และอื่นๆ

หลายวิธีการเน้นที่วิธีการเฉพาะของ Bash ในการแยกสตริง ด้านล่างจะเป็นการ रूपรายวิธีที่ควรทำงานในสคริปต์ Shell Linux ใดๆ

การใช้คำสั่ง cut เพื่อแยกสตริง

คำสั่ง cut ใน Linux นำส่วนต่างๆ ออกจากบรรทัดในไฟล์ข้อความและแสดงผลออกมา

ตัวอย่างนี้จะปรับคำสั่งนี้เพื่อแยกข้อความที่ตัวคั่นที่กำหนด

สำหรับคู่มือผู้ใช้เต็มรูปแบบของคำสั่ง cut คลิกที่นี่

โค้ด

ด้านล่างเป็นสคริปต์ Bash ตัวอย่างที่รับสตริง splitMe และคืนค่าไอเท็มตามตำแหน่งในสตริงที่แยกด้วยจุลภาค (,):

#!/bin/bash # กำหนดสตริงที่คั่นด้วยจุลภาค splitMe='apple,banana,grape,kiwi' # รับไอเท็มแรกในสตริงที่แยก firstItem="$(echo $splitMe | cut -d',' -f1)" # รับไอเท็มที่สามในสตริงที่แยก thirdItem="$(echo $splitMe | cut -d',' -f3)" # ยืนยันผลลัพธ์โดยแสดงบนหน้าจอ echo $thirdItem

ทำไมจึงทำงานได้? คำสั่ง echo ใช้ส่งสตริงต้นฉบับไปยังคำสั่ง cut คำสั่ง cut ใช้ตัวเลือก -d เพื่อระบุตัวคั่น (ในกรณีนี้คือจุลภาค แต่สามารถใช้ตัวอักษรหรือสตริงใดๆ ได้) และตัวเลือก -f ตามด้วยตัวเลขเพื่อระบุฟิลด์ที่ควรคืนค่า – นั่นคือตำแหน่งของไอเท็มที่คุณต้องการจากสตริงที่แยก

ฟังก์ชัน Bash ที่นำกลับมาใช้ใหม่ได้

นั่นดีแล้ว แต่มันไม่ได้สามารถนำกลับมาใช้ใหม่ได้จริงๆ – ดังนี้คือในรูปแบบฟังก์ชัน:

#!/bin/bash # กำหนดฟังก์ชันเพื่อแยกสตริง # จะรับสามพารามิเตอร์: สตริงที่จะแยก, ตัวคั่น, และตำแหน่งของไอเท็มที่จะคืนค่า splitMyString(){ splitString=$1 delimiter=$2 item=$3 result="$(echo $splitString | cut -d',' -f$item)" echo $result } # กำหนดสตริงเพื่อทดสอบ splitMe='apple,banana,grape,kiwi' # ทดสอบฟังก์ชันโดยแยกสตริงที่จุลภาคและคืนค่าไอเท็มที่สอง echo $(splitMyString $splitMe "," 2)