การลบอักขระออกจากสตริงใน Bash

Removing Characters From String Bash



ในบางครั้ง คุณอาจต้องลบอักขระออกจากสตริง ไม่ว่าเหตุผลจะเป็นเช่นไร 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' ที่เกิดขึ้นครั้งแรกในสตริงเท่านั้น
ลบอักขระเฉพาะออกจาก String1
หากต้องการลบ 'h' ทั้งหมดออกจากสตริง ให้ใช้คำสั่งต่อไปนี้:



$โยนออก 'สวัสดีสบายดีไหม?' | sed 's/h//g'

ที่ไหน NS ย่อมาจาก global. มันจะลบการเกิด 'h' ทั้งหมดในสตริง
ลบอักขระเฉพาะออกจาก String2

ลบอักขระตัวแรกออกจาก String

วิธีลบอักขระตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | sed 's/^.//' ไฟล์

โดยที่ (.) จะจับคู่อักขระตัวเดียวทุกประการ และ (^) จะจับคู่อักขระใดๆ ที่จุดเริ่มต้นของสตริง
ลบอักขระตัวแรกออกจาก String

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

วิธีลบอักขระตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | 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 . '

rmv อักขระสุดท้ายจากสตริง

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

ในการลบอักขระสองตัวสุดท้ายออกจาก สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | 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 ,' เพื่อลบอักขระตัวแรกและตัวสุดท้าย

ลบอักขระทั้งตัวแรกและตัวสุดท้ายออกจาก String

ลบอักขระออกจากสตริงโดยใช้ cut

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

เพื่อจุดประสงค์ในการสาธิต เราจะใช้สตริงตัวอย่างแล้วไพพ์ไปยังคำสั่ง cut

ลบอักขระตัวแรกออกจาก String

ในการลบอักขระตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 2-

คำสั่งนี้จะพิมพ์สตริงที่ขึ้นต้นด้วยอักขระตัวที่สองในขณะที่ลบอักขระตัวแรก
rmv ตัด -c

ลบอักขระสี่ตัวแรกออกจากสตริง

ในการลบอักขระสี่ตัวแรกออกจากสตริง สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 5-

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

พิมพ์สตริงระหว่างอักขระที่ 2 และ 5

ในการพิมพ์สตริง สวัสดีสบายดีไหม? ระหว่างอักขระที่สองและห้า , คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | ตัด -ค 2-5

คำสั่งนี้จะพิมพ์สตริง โดยเริ่มจากอักขระตัวที่สองและอักขระที่ห้า ขณะที่ลบอักขระเริ่มต้นและสิ้นสุดที่เหลือ
rmv ที่ 2 และ 5 c2

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

วิธีลบอักขระตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? ใช้ ตัด สั่งกับ rev ดังต่อไปนี้

$โยนออก 'สวัสดีสบายดีไหม?' | rev | ตัด -c2- | rev

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

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

หากต้องการลบอักขระสี่ตัวสุดท้ายออกจากบรรทัด สวัสดีสบายดีไหม? คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | rev | ตัด -c5- | rev

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

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

ในการลบอักขระตัวแรกและตัวสุดท้ายออกจากสตริง สวัสดีสบายดีไหม? ใช้ ตัด สั่งกับ rev ดังต่อไปนี้

$โยนออก 'สวัสดีชาวโลก!' | ตัด -c2- | rev | ตัด -c2- |rev

คำสั่งนี้ทำงานโดยการตัดอักขระตัวแรก จากนั้นย้อนกลับสตริงและตัดอักขระตัวแรก จากนั้นย้อนกลับอีกครั้งเพื่อให้ได้ผลลัพธ์ที่ต้องการ
rmv ก่อนและสุดท้าย

ลบอักขระออกจากสตริงโดยใช้ tr

คำสั่ง tr (ย่อมาจาก translate) ใช้เพื่อแปล บีบ และลบอักขระออกจากสตริง คุณยังสามารถใช้ tr เพื่อลบอักขระออกจากสตริงได้

เพื่อจุดประสงค์ในการสาธิต เราจะใช้สตริงตัวอย่าง จากนั้นไพพ์ไปยังคำสั่ง tr

ลบการเกิดขึ้นทั้งหมดของตัวละคร

เมื่อใช้คำสั่ง tr คุณสามารถลบอักขระตัวพิมพ์เล็กหรือตัวพิมพ์ใหญ่ทั้งหมดออกจากสตริงของคุณได้ ตัวอย่างเช่น หากต้องการลบอักขระตัวพิมพ์เล็ก 'h' ทั้งหมดออกจากสตริง คำสั่งจะเป็น:

$โยนออก 'สวัสดีสบายดีไหม?' | NS -NSชม

ลบเหตุการณ์ทั้งหมด 01

ในทำนองเดียวกัน หากต้องการลบอักขระตัวพิมพ์ใหญ่ '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 จะมีมากกว่าหนึ่งวิธีในการทำงานง่ายๆ ให้สำเร็จ เช่นเดียวกับการลบอักขระออกจากสตริง บทความนี้แสดงให้คุณเห็นถึงสี่วิธีในการทำเช่นนั้น พร้อมด้วยตัวอย่างสองสามอย่างสำหรับการลบอักขระที่ไม่ต้องการออกจากสตริง การตัดสินใจว่าจะใช้เครื่องมือใดทั้งหมดขึ้นอยู่กับความชอบของคุณ และที่สำคัญกว่านั้นคือสิ่งที่คุณต้องการบรรลุ