ฉันกำลังทำงานกับข้อความที่เต็มไปด้วยสิ่งของระหว่างวงเล็บ [] ที่ฉันไม่ต้องการ เนื่องจากฉันสามารถลบเครื่องหมายวงเล็บด้วยตัวเองฉันไม่ต้องการซับในที่จะทำเพื่อฉัน แต่ฉันต้องการซับที่จะลบทุกอย่างระหว่างพวกเขา
แล้ววงเล็บ () แทนที่จะเป็นวงเล็บคืออะไร
ฉันกำลังทำงานกับข้อความที่เต็มไปด้วยสิ่งของระหว่างวงเล็บ [] ที่ฉันไม่ต้องการ เนื่องจากฉันสามารถลบเครื่องหมายวงเล็บด้วยตัวเองฉันไม่ต้องการซับในที่จะทำเพื่อฉัน แต่ฉันต้องการซับที่จะลบทุกอย่างระหว่างพวกเขา
แล้ววงเล็บ () แทนที่จะเป็นวงเล็บคืออะไร
คำตอบ:
แทนที่[some text]
ด้วยสตริงว่าง สมมติว่าคุณไม่ต้องการแยกวงเล็บที่ซ้อนกันsome text
จะไม่สามารถใส่วงเล็บใด ๆ ได้
sed -e 's/\[[^][]*\]//g'
ทราบว่าในการแสดงออกวงเล็บ[^][]
เพื่อให้ตรงกับอะไร แต่[
หรือ]
ที่]
จะต้องมาก่อน โดยปกติแล้ว a ]
จะสิ้นสุดชุดอักขระ แต่ถ้าเป็นอักขระตัวแรกในชุด (ที่นี่หลังจาก^
อักขระประกอบ), ]
หมายถึงตัวของมันเอง
หากคุณต้องการแยกวงเล็บที่ซ้อนกันหรือถ้าข้อความที่อยู่ในวงเล็บสามารถขยายได้หลายบรรทัดแสดงว่าไม่ใช่เครื่องมือที่เหมาะสม
s/\[[^\[\]]*\]//g
(เช่นใช้แบ็กสแลชเพื่อหนีสมาชิกของชุดอักขระ)
[…]
= ชุดอักขระ ^
เป็นตัวอักษรตัวแรกหมายถึงการเติมเต็มชุด ]
โดยปกติจะเป็นการทำเครื่องหมายจุดสิ้นสุดของเซต แต่ถ้าเป็นอักขระตัวแรกนอกเหนือจาก^
นั้นจะเป็นอักขระทั่วไป - ชุดเปล่าหรือส่วนประกอบเสริมของชุดว่างไม่ได้รับอนุญาต จากนั้น[
เป็นเรื่องปกติและ]
สิ้นสุดชุด
คำสั่งsed -e 's/([^()]*)//g'
จะทำวงเล็บแทนวงเล็บ