บทความนี้จะแสดงวิธีแยกสตริงที่ตัวคั่นที่กำหนดในสคริปต์ Bash/Shell และแสดงตัวอย่าง
การแยกสตริงเป็นฟังก์ชันที่มีประโยชน์เมื่อสร้างสคริปต์ของคุณ CSV (Comma Separated Values) เป็นรูปแบบทั่วไปที่ทำให้ข้อมูลพร้อมใช้งานออนไลน์ โดยที่ช่องข้อมูลในตารางจะถูกคั่นด้วยเครื่องหมายจุลภาค (แปลกใจ)
คุณอาจแค่ต้องการแบ่งประโยคออกเป็นคำในช่องว่าง หรือแบ่งย่อหน้าเป็นประโยคในช่วงเวลานั้น เป็นต้น
โซลูชันจำนวนมากมุ่งเน้นไปที่วิธีการแยกสตริงเฉพาะของ Bash ด้านล่างนี้ ฉันจะสรุปวิธีการที่ควรจะใช้ได้กับเชลล์สคริปต์ของ Linux
การใช้ การตัด คำสั่งแยกสตริง
ที่ ตัด คำสั่งใน Linux ลบส่วนต่างๆ ออกจากบรรทัดในไฟล์ข้อความแล้วส่งออก
ตัวอย่างนี้จะปรับคำสั่งนี้เพื่อแยกข้อความที่ตัวคั่นที่กำหนด
สำหรับคู่มือผู้ใช้ฉบับเต็มของ cut คำสั่งคลิกที่นี่
เดอะโค้ด
ด้านล่างนี้เป็นตัวอย่างสคริปต์ทุบตีที่ใช้สตริง splitMe และส่งกลับรายการตามตำแหน่งในการแยกสตริงที่เครื่องหมายจุลภาค (, ):
#!/bin/bash # Define a comma-separated string splitMe='apple,banana,grape,kiwi' # Get the first item in the split string firstItem="$(echo $splitMe | cut -d',' -f1)" # Get the third item in the split string thirdItem="$(echo $splitMe | cut -d',' -f3)" # Confirm the result by outputting it to screen echo $thirdItem
เหตุใดจึงใช้งานได้ เสียงสะท้อน คำสั่งใช้เพื่อไปป์สตริงเดิมไปยัง ตัด สั่งการ. ที่ ตัด คำสั่งใช้ -d ตัวเลือกเพื่อระบุตัวคั่น (ในกรณีนี้คือเครื่องหมายจุลภาค แต่สามารถใช้อักขระหรือสตริงใดก็ได้ ) และ -f ตัวเลือกตามด้วยตัวเลขเพื่อระบุฟิลด์ที่จะส่งคืน นั่นคือตำแหน่งของรายการที่คุณต้องการรับจากสตริงแยก
ฟังก์ชันทุบตีแบบใช้ซ้ำได้
ทั้งหมดนั้นดีและดี แต่ไม่สามารถใช้ซ้ำได้ ดังนั้นนี่คือฟังก์ชัน:
#!/bin/bash # Define function to split strings # It will accept three parameters, the string to split, the delimiter, and finally the position of the item to return splitMyString(){ splitString=$1 delimiter=$2 item=$3 result="$(echo $splitString | cut -d',' -f$item)" echo $result } # Define a string to split for testing splitMe='apple,banana,grape,kiwi' # Test the function by splitting the string at the comma and returning the second item echo $(splitMyString $splitMe "," 2)ที่สอง