Bash ลบอักขระ x ตัวสุดท้ายออกจากสตริง

Bash Remove Last X Characters From String



เราอาจต้องลบตัวอักษรออกจากสตริงในบางครั้ง ลินุกซ์มีเครื่องมือที่มีประโยชน์มากมายในตัวสำหรับการลบตัวอักษรที่เป็นข้อความใน Bash บทความนี้อธิบายวิธีการลบตัวอักษรจากสตริงโดยใช้วิธีการเหล่านั้น ในโพสต์นี้ คำแนะนำทำงานบน Ubuntu 20.04 Focal Fossa คำแนะนำเดียวกันนี้สามารถรันได้บนระบบ Linux ใดๆ ที่มีการติดตั้งยูทิลิตี้ที่กล่าวถึงข้างต้น เพื่อดำเนินการตามคำแนะนำ เราจะใช้เทอร์มินัลปกติ ทางลัด Ctrl+Alt+T จะเปิดเครื่องมือ Terminal

วิธีที่ 01: สตริงย่อย Way

วิธีแรกของเราในการลบตัวอักษรหรืออักขระออกจากสตริงนั้นเหมือนกับการสร้างสตริงย่อยจากสตริงดั้งเดิม ในขณะเดียวกันเทอร์มินัลได้เปิดแล้ว เราจะสร้างไฟล์ทุบตีเพื่อเพิ่มรหัสทุบตีของเรา เพื่อให้เราสามารถลบอักขระหรือสร้างสตริงย่อยได้ ดังนั้นเราจึงใช้คำสั่งสัมผัสในตัวในเชลล์ของเราเพื่อสร้างไฟล์ทุบตี









เนื่องจากไฟล์ถูกสร้างขึ้นอย่างรวดเร็วในโฟลเดอร์เริ่มต้นของ Ubuntu 20.04 ให้เปิดไฟล์ในโปรแกรมแก้ไขเพื่อแก้ไข ดังนั้นเราจึงเลือกตัวแก้ไข GNU เพื่อเปิดเอกสาร file.sh ดังต่อไปนี้







คัดลอกรหัสที่แสดงด้านล่างในนั้น รหัสนี้มีส่วนขยาย bash ที่จุดเริ่มต้นและหลังจากนั้นเราได้ประกาศตัวแปรสตริง val ด้วยค่าสตริง ในอีกบรรทัดหนึ่ง เราใช้ echo phrase เพื่อแสดงตัวแปรนี้ในเทอร์มินัล งานจริงเริ่มต้นจากที่นี่ เราได้เริ่มต้นตัวแปรใหม่และกำหนดค่าที่เป็นสตริงย่อยของ val ตัวแปรเดิม เราทำได้โดยกล่าวถึง -14 ในเครื่องหมายวงเล็บหลังเครื่องหมายทวิภาค สิ่งนี้บอกคอมไพเลอร์ว่าต้องลบตัวอักษร 14 ตัวสุดท้ายออกจากสตริง FirstWorldCountries ดั้งเดิม ตัวอักษรที่เหลือจะถูกบันทึกลงในตัวแปรใหม่ ในบรรทัดสุดท้าย มีการใช้เสียงสะท้อนเพื่อพิมพ์ตัวแปรใหม่ใหม่



การดำเนินการที่เหมาะสมของไฟล์ file.sh โดยใช้คำสั่ง bash ออกมาตามที่คาดไว้ ประการแรก จะแสดงค่าของตัวแปรสตริงแรก val และหลังจากนั้น จะแสดงค่าของสตริงที่สร้างขึ้นใหม่จากตัวแปรตัวแรกตามผลลัพธ์ที่แสดง

วิธีที่ 02: การใช้สัญลักษณ์พิเศษ

อีกวิธีที่ง่ายและง่ายกว่าในการลบตัวอักษรหรืออักขระตัวสุดท้ายออกจากสตริงใดๆ ก็คือการใช้สัญลักษณ์หรืออักขระพิเศษ เช่น สัญลักษณ์เปอร์เซ็นต์และเครื่องหมายคำถาม คราวนี้เราจะใช้เปอร์เซ็นต์และเครื่องหมายคำถามเพื่อลบอักขระออกจากสตริงใดๆ ดังนั้นเราจึงได้เปิดไฟล์เดียวกันเพื่ออัปเดตสคริปต์ทุบตีโดยใช้โปรแกรมแก้ไข GNU Nano โค้ดโดยรวมจะเหมือนกัน แต่ตัวแปรส่วนใหม่ต่างกันเล็กน้อย เราใช้เครื่องหมายเปอร์เซ็นต์เพื่อให้ระบบทราบว่าจำนวนเครื่องหมายคำถามดังกล่าวแสดงถึงจำนวนอักขระจากตัวแปร val ที่จะถูกลบออกหลังจากเครื่องหมายเปอร์เซ็นต์นี้ คุณจะเห็นว่าเราได้เพิ่มสัญลักษณ์เครื่องหมายคำถาม 9 ตัว ซึ่งหมายความว่าอักขระ 9 ตัวสุดท้ายจากสตริง FirstWorldCountries จะถูกลบออก และสตริงที่เหลือจะเป็น FirstWorld สตริงที่เหลือนี้จะถูกบันทึกลงในตัวแปรใหม่

เมื่อเรารันไฟล์ bash ที่อัปเดตแล้ว ผลลัพธ์จะมาตามที่คาดไว้ จะแสดงสตริงเดิมจากตัวแปรตัวแรกและค่าของตัวแปรตัวที่ 2 ซึ่งเป็นค่าใหม่ที่สร้างขึ้นจากตัวแปร val

วิธีที่ 03: การใช้Sed

Sed เป็นเครื่องมือที่มีประโยชน์และมีประสิทธิภาพในการเปลี่ยนลำดับข้อความ นั่นคือสภาพแวดล้อมการพัฒนาแบบไม่โต้ตอบที่ให้คุณทำงานกับการป้อนข้อมูลและทำการแปลงข้อความอย่างง่าย คุณอาจใช้ sed เพื่อลบจดหมายจากข้อความที่คุณไม่ต้องการ เราจะใช้สตริงตัวอย่างและกำหนดเส้นทางไปยังคำสั่ง sed เพื่อจุดประสงค์ในการอธิบาย คุณสามารถลบอักขระบางตัวออกจากสตริงบางประเภทด้วย sed ดังนั้น เราได้ใช้บรรทัดของสตริงอย่างง่ายภายในคำสั่ง echo เราใช้ sed เพื่อลบตัวอักษร A ออกจากสตริงที่กล่าวถึง ตรวจสอบให้แน่ใจว่าได้ปฏิบัติตามไวยากรณ์ 's/string_to_be_removed//' ผลลัพธ์แสดงว่าตัวอักษร A ถูกลบแล้ว

ในการลบคำทั้งคำ Aqsa เราได้กล่าวถึงอักขระตัวแรกและตัวสุดท้ายของคำที่มีจุดอยู่ภายในเพื่อแสดงตัวอักษรที่ขาดหายไป ผลลัพธ์แสดงสตริงที่มีการลบคำว่า Aqsa

หากต้องการลบอักขระตัวสุดท้ายออกจากสตริง ให้ระบุจำนวนจุดตามความต้องการของคุณก่อนสัญลักษณ์ดอลลาร์ตามที่แสดง

วิธีที่ 04: การใช้Awk

Awk เป็นภาษาสคริปต์ที่ซับซ้อนซึ่งอาจใช้เพื่อจับคู่รูปแบบและประมวลผลข้อความ คุณสามารถใช้ Awk เพื่อเปลี่ยนและแก้ไขอินพุตได้หลายวิธี คุณยังลบตัวอักษรออกจากสตริงได้โดยใช้ awk Awk ดูเหมือนจะแตกต่างจาก sed เล็กน้อย คราวนี้เราได้เปลี่ยนสตริงด้วย Aqsa Yasin ฟังก์ชัน awk จะสร้างสตริงย่อยผ่านเมธอด substr และพิมพ์ในเทอร์มินัล มีการใช้ความยาวของฟังก์ชันเพื่อแสดงจำนวนตัวอักษรที่นำออกจากสตริงดังกล่าว ในที่นี้ length($0)-5 หมายถึงการลบอักขระ 5 ตัวสุดท้ายของสตริง และส่วนที่เหลือจะเป็นส่วนหนึ่งของสตริงย่อยที่จะพิมพ์ออกมา

เราได้พยายามลบอักขระ 9 ตัวสุดท้ายออกจากสตริง Aqsa Yasin และได้รับ A เป็นสตริงย่อยของเอาต์พุต

วิธีที่ 05: การใช้ Cut

Cut ดูเหมือนจะเป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งสำหรับการดึงข้อความจากวลีหรือเอกสารดังกล่าวและพิมพ์ไปยังเอาต์พุตมาตรฐาน การดำเนินการนี้ยังสามารถใช้เพื่อลบตัวอักษรออกจากสตริงบางประเภท เราจะใช้ตัวอย่างวลีและส่งต่อไปยังคำสั่งตัดเพื่อวัตถุประสงค์ในการทดสอบ ดังนั้นเราจึงใช้วลี Aqsa Yasin และส่งต่อไปยังคำค้นหาที่ถูกตัดออก หลังจากแฟล็ก –c เราได้กำหนดช่วงของดัชนีสำหรับสตริงเพื่อตัดอักขระจากสตริงที่กล่าวถึง มันจะแสดงอักขระจากดัชนี 1 ถึงดัชนี 5 ดัชนี 5 ได้รับการยกเว้นที่นี่ ผลลัพธ์จะแสดงอักขระ 4 ตัวแรกเป็น Aqsa

คราวนี้เราจะใช้คำสั่งตัดต่างกัน เราใช้ฟังก์ชัน rev เพื่อย้อนกลับสตริง หลังจากการย้อนกลับของสตริง เราจะตัดอักขระตัวแรกออกจากสตริง แฟล็ก -c2- หมายถึงสตริงย่อยของเราจะเป็นตัวต่อตัว 2 หลังจากนั้น ฟังก์ชันย้อนกลับจะถูกใช้อีกครั้งเพื่อเปลี่ยนสตริงกลับ ดังนั้น คราวนี้เราได้สตริงเดิมกลับมาพร้อมกับการนำอักขระตัวสุดท้ายออก

หากต้องการลบอักขระ 7 ตัวสุดท้าย คุณต้องพูดถึง -c7- ในคำสั่ง cut ในขณะที่ใช้ฟังก์ชันย้อนกลับด้วย

บทสรุป:

มีเวลามากกว่าหนึ่งวิธีในการทำงานพื้นฐานบน Linux ในทำนองเดียวกัน การลบอักขระออกจากข้อความก็เป็นไปได้ บทความนี้แสดงห้าวิธีในการกำจัดอักขระที่ไม่ต้องการออกจากสตริง รวมถึงบางตัวอย่าง เครื่องมือใดก็ตามที่คุณเลือกขึ้นอยู่กับตัวเลือกของคุณ และที่สำคัญกว่านั้นคือสิ่งที่คุณต้องการทำให้สำเร็จ