ในบางครั้ง คุณอาจต้องลบอักขระออกจากสตริง ไม่ว่าเหตุผลจะเป็นเช่นไร Linux ก็มีเครื่องมือในตัวที่มีประโยชน์มากมายให้คุณลบอักขระออกจากสตริงใน Bash บทความนี้แสดงวิธีใช้เครื่องมือเหล่านั้นเพื่อลบอักขระออกจากสตริง
บทความนี้ครอบคลุมถึงวิธีการดำเนินการดังต่อไปนี้:
- ลบอักขระออกจากสตริงโดยใช้ sed
- ลบอักขระออกจากสตริงโดยใช้ awk
- ลบอักขระออกจากสตริงโดยใช้ cut
- ลบอักขระออกจากสตริงโดยใช้ tr
คำสั่งที่แสดงในบทความนี้ดำเนินการใน Ubuntu 20.04 Focal Fossa คำสั่งเดียวกันนี้สามารถดำเนินการได้บนลีนุกซ์รุ่นอื่นๆ ที่มีเครื่องมือข้างต้น เราจะใช้แอปพลิเคชัน Terminal เริ่มต้นเพื่อเรียกใช้คำสั่ง คุณสามารถเข้าถึงแอปพลิเคชัน Terminal โดยใช้แป้นพิมพ์ลัด Ctrl+Alt+T
ลบอักขระออกจากสตริงโดยใช้ sed
Sed เป็นยูทิลิตี้ที่ทรงพลังและสะดวกใช้สำหรับแก้ไขสตรีมข้อความ เป็นโปรแกรมแก้ไขข้อความแบบไม่โต้ตอบที่ช่วยให้คุณสามารถปรับแต่งข้อความพื้นฐานบนสตรีมอินพุตได้ คุณยังสามารถใช้ sed เพื่อลบอักขระที่ไม่ต้องการออกจากสตริงได้
เพื่อการสาธิต เราจะใช้สตริงตัวอย่างแล้วไพพ์ไปยังคำสั่ง sed
ลบอักขระเฉพาะออกจากสตริง
เมื่อใช้ sed คุณสามารถลบอักขระเฉพาะออกจากสตริงได้ ตัวอย่างเช่น หากต้องการลบ h ออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | sed 'NS//'การดำเนินการนี้จะลบเฉพาะ 'h' ที่เกิดขึ้นครั้งแรกในสตริงเท่านั้น
หากต้องการลบ 'h' ทั้งหมดออกจากสตริง ให้ใช้คำสั่งต่อไปนี้:
$โยนออก 'สวัสดีสบายดีไหม?' | sed 's/h//g'
ที่ไหน NS ย่อมาจาก global. มันจะลบการเกิด 'h' ทั้งหมดในสตริง
ลบอักขระตัวแรกออกจาก String
วิธีลบอักขระตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | sed 's/^.//' ไฟล์โดยที่ (.) จะจับคู่อักขระตัวเดียวทุกประการ และ (^) จะจับคู่อักขระใดๆ ที่จุดเริ่มต้นของสตริง
ลบอักขระตัวสุดท้ายออกจากสตริง
วิธีลบอักขระตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | sed 's/.$//'ที่ไหน ( . ) จับคู่อักขระตัวเดียวทุกประการ และ ($) จะจับคู่อักขระใดๆ ที่ส่วนท้ายของสตริง
ลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริง
วิธีลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | sed 's /^.//; s /.$//'
ลบอักขระออกจากสตริงโดยใช้ awk
Awk เป็นภาษาสคริปต์ที่มีประสิทธิภาพซึ่งใช้สำหรับการจับคู่รูปแบบ ควบคู่ไปกับการประมวลผลข้อความ Awk ให้คุณกรองและแปลงข้อความได้หลายวิธี คุณยังสามารถใช้ awk เพื่อลบอักขระออกจากสตริงได้
เพื่อจุดประสงค์ในการสาธิต เราจะใช้สตริงตัวอย่าง จากนั้นไพพ์ไปยังคำสั่ง awk
ลบอักขระตัวแรกออกจากสตริง
วิธีลบอักขระตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | awk '{ พิมพ์ substr( $0, 2 ) }'โดยที่ ($0) คือสตริงเป้าหมายทั้งหมด และ (2) คือตำแหน่งเริ่มต้นของอักขระ คำสั่งดังกล่าวจะลบอักขระตัวแรก 'h' หมายเลขอักขระ '1' และส่งคืนสตริงเป้าหมายที่ขึ้นต้นด้วยอักขระตัวที่สอง 'e.'
ลบอักขระสองตัวแรกออกจากสตริง
คุณยังสามารถลบอักขระจำนวนหนึ่งออกจากจุดเริ่มต้นของสตริงได้อีกด้วย ตัวอย่างเช่น การลบอักขระสองตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | awk '{ พิมพ์ substr ($0, 3 ) }'คำสั่งด้านบนจะลบอักขระสองตัวแรกคือ 'he' หรือหมายเลขอักขระ '1 และ 2' และส่งคืนสตริงเป้าหมายที่ขึ้นต้นด้วยหมายเลขอักขระ '3' หรือ 'l'
ลบอักขระตัวสุดท้ายออกจากสตริง
วิธีลบอักขระตัวสุดท้ายออกจาก สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | awk '{ พิมพ์ substr( $0, 1, ความยาว($0)-1 ) }'ที่ไหน ความยาว($0)-1 หมายถึงการหัก' 1 ’ จากความยาวอักขระทั้งหมด
คำสั่งดังกล่าวจะพิมพ์สตริงที่ขึ้นต้นด้วยหมายเลขอักขระ ' 1 ' จนถึง ความยาว($0)-1 เพื่อถอดอักขระตัวสุดท้ายออก
มี ' 19 ’ อักขระ (รวมช่องว่าง) ในสตริงด้านบน คำสั่งจะทำงานโดยพิมพ์อักขระทั้งหมด ขึ้นต้นด้วยอักขระ ' 1 ' และขึ้นอยู่กับตัวละคร ' 18 ,' ขณะลบอักขระตัวสุดท้าย' 19 . '
ลบอักขระสองตัวสุดท้ายออกจากสตริง
ในการลบอักขระสองตัวสุดท้ายออกจาก สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | awk '{ พิมพ์ substr( $0, 1, ความยาว($0)-2 ) }'ที่ไหน ความยาว($0)-2 หมายถึงการหัก' 2 ’ จากความยาวอักขระทั้งหมด
คำสั่งดังกล่าวจะพิมพ์สตริงที่ขึ้นต้นด้วยหมายเลขอักขระ ' 1 ' และถึงจำนวนอักขระ ' ความยาว($0)-2 ,' เพื่อลบอักขระสองตัวสุดท้ายในสตริง
ลบอักขระทั้งตัวแรกและตัวสุดท้ายออกจาก String
หากต้องการลบทั้งอักขระตัวแรกและตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | awk '{print substr($0, 2, length($0) - 2)}'ที่ไหน ความยาว($0)-2 หมายถึงการหัก' 2 ’ จากความยาวอักขระทั้งหมด
คำสั่งดังกล่าวจะพิมพ์สตริงที่ขึ้นต้นด้วยหมายเลขอักขระ ' 2 ' จนถึงเลขอักขระ ' ความยาว($0)-2 ,' เพื่อลบอักขระตัวแรกและตัวสุดท้าย
ลบอักขระออกจากสตริงโดยใช้ cut
Cut เป็นเครื่องมือบรรทัดคำสั่งที่ใช้กันทั่วไปเพื่อแยกส่วนของข้อความจากสตริงหรือไฟล์ และพิมพ์ผลลัพธ์ไปยังเอาต์พุตมาตรฐาน คุณยังสามารถใช้คำสั่งนี้เพื่อลบอักขระออกจากสตริงได้
เพื่อจุดประสงค์ในการสาธิต เราจะใช้สตริงตัวอย่างแล้วไพพ์ไปยังคำสั่ง cut
ลบอักขระตัวแรกออกจาก String
ในการลบอักขระตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 2-คำสั่งนี้จะพิมพ์สตริงที่ขึ้นต้นด้วยอักขระตัวที่สองในขณะที่ลบอักขระตัวแรก
ลบอักขระสี่ตัวแรกออกจากสตริง
ในการลบอักขระสี่ตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 5-คำสั่งนี้จะพิมพ์สตริง โดยเริ่มจากอักขระตัวที่ห้า โดยจะลบอักขระสี่ตัวแรกออก
พิมพ์สตริงระหว่างอักขระที่ 2 และ 5
ในการพิมพ์สตริง สวัสดีสบายดีไหม? ระหว่างอักขระที่สองและห้า , คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 2-5คำสั่งนี้จะพิมพ์สตริง โดยเริ่มจากอักขระตัวที่สองและอักขระที่ห้า ขณะที่ลบอักขระเริ่มต้นและสิ้นสุดที่เหลือ
ลบอักขระตัวสุดท้ายออกจากสตริง
วิธีลบอักขระตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? ใช้ ตัด สั่งกับ rev ดังต่อไปนี้
$โยนออก 'สวัสดีสบายดีไหม?' | rev | ตัด -c2- | revคำสั่งนี้ทำงานโดยการย้อนกลับสตริงก่อน จากนั้นจึงตัดอักขระตัวแรก และสุดท้ายย้อนกลับอีกครั้งเพื่อให้ได้ผลลัพธ์ที่ต้องการ
ลบอักขระสี่ตัวสุดท้ายออกจากสตริง
หากต้องการลบอักขระสี่ตัวสุดท้ายออกจากบรรทัด สวัสดีสบายดีไหม? คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | rev | ตัด -c5- | revคำสั่งนี้ทำงานโดยการย้อนกลับสตริงก่อน จากนั้นจึงตัดอักขระสี่ตัวแรก จากนั้นย้อนกลับอีกครั้งเพื่อให้ได้ผลลัพธ์ที่ต้องการ
ลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริง
ในการลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? ใช้ ตัด สั่งกับ rev ดังต่อไปนี้
$โยนออก 'สวัสดีชาวโลก!' | ตัด -c2- | rev | ตัด -c2- |revคำสั่งนี้ทำงานโดยการตัดอักขระตัวแรก จากนั้นย้อนกลับสตริงและตัดอักขระตัวแรก จากนั้นย้อนกลับอีกครั้งเพื่อให้ได้ผลลัพธ์ที่ต้องการ
ลบอักขระออกจากสตริงโดยใช้ tr
คำสั่ง tr (ย่อมาจาก translate) ใช้เพื่อแปล บีบ และลบอักขระออกจากสตริง คุณยังสามารถใช้ tr เพื่อลบอักขระออกจากสตริงได้
เพื่อจุดประสงค์ในการสาธิต เราจะใช้สตริงตัวอย่าง จากนั้นไพพ์ไปยังคำสั่ง tr
ลบการเกิดขึ้นทั้งหมดของตัวละคร
เมื่อใช้คำสั่ง tr คุณสามารถลบอักขระตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ทั้งหมดออกจากสตริงของคุณได้ ตัวอย่างเช่น หากต้องการลบอักขระตัวพิมพ์เล็ก 'h' ทั้งหมดออกจากสตริง คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | NS -NSชม
ในทำนองเดียวกัน หากต้องการลบอักขระตัวพิมพ์ใหญ่ 'H' ทั้งหมดออกจากสตริง คำสั่งจะเป็นดังนี้:
$โยนออก 'สวัสดีสบายดีไหม?' | NS -NSชมคุณยังสามารถใช้ลำดับที่ตีความเพื่อลบอักษรตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่:
$โยนออก 'สวัสดีสบายดีไหม?'| NS -NS [:บน:]$โยนออก 'สวัสดีสบายดีไหม?'| NS -NS [:ต่ำกว่า:]
ลบการเกิดขึ้นทั้งหมดของอักขระตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
คุณยังสามารถลบอักขระทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ทั้งหมดออกจากสตริงได้ ตัวอย่างเช่น คำสั่งต่อไปนี้จะลบอักขระ 'h' ทั้งหมดที่เกิดขึ้นทั้งตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
$โยนออก 'สวัสดีสบายดีไหม?' | NS -NS'hH'
ลบการเกิดขึ้นทั้งหมดของตัวละครในช่วงที่กำหนด
ในการลบอักขระที่เกิดขึ้นทั้งหมดออกจากสตริงในช่วงเฉพาะ 'd-h' คำสั่งจะเป็น:
$โยนออก 'สวัสดีสบายดีไหม?' | NS -NS 'd-h'คำสั่งนี้จะลบอักขระทั้งหมดในช่วง 'd-h' (d,e,f,g,h) ในสตริง
บทสรุป
ใน Linux จะมีมากกว่าหนึ่งวิธีในการทำงานง่ายๆ ให้สำเร็จ เช่นเดียวกับการลบอักขระออกจากสตริง บทความนี้แสดงให้คุณเห็นถึงสี่วิธีในการทำเช่นนั้น พร้อมด้วยตัวอย่างสองสามอย่างสำหรับการลบอักขระที่ไม่ต้องการออกจากสตริง การตัดสินใจว่าจะใช้เครื่องมือใดทั้งหมดขึ้นอยู่กับความชอบของคุณ และที่สำคัญกว่านั้นคือสิ่งที่คุณต้องการบรรลุ