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