ฉันมีคำสั่งทดแทน sed ว่าผมต้องการที่จะเข้ากันได้กับ BSD sedเช่นเดียวกับ sedGNU นิพจน์ทั่วไปที่ขยายเพิ่มไม่ใช่ปัญหาเนื่องจากฉันไม่ต้องการใช้ในกรณีนี้ ปัญหาหลักของฉันคือความแตกต่างในวิธีที่ทั้งสองsedตีความลำดับหนีอักขระในสตริงการแทนที่ สตริงแทนที่ผมจะมีแท็บและการขึ้นบรรทัดใหม่และฉันต้องการให้พวกเขาสามารถมองเห็นได้ในสตริงคำสั่งเพื่อความสะดวกในการบำรุงรักษา แต่ BSD sedไม่ตีความลำดับหนีและ GNU ไม่sed อะไรคือวิธีที่เหมาะสมในการแนะนำsedให้ตีความลำดับการหลบหนีเหล่านี้ใน BSD ตัวอย่างสองต่อไปนี้เป็นตัวอย่างที่ชัดเจนของปัญหาของฉัน:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
yeilds
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
อัตราผลตอบแทน
AntBnC
เห็นได้ชัด\nและ\tไม่ถูกตีความว่าเป็นลำดับหนีภัยของ BSDsed
ตอนนี้สำหรับคำถามของฉัน อ้างอิงจาก BSD sedmanpage:
ในการระบุอักขระขึ้นบรรทัดใหม่ในสตริงการแทนที่ให้นำหน้าด้วยแบ็กสแลช
นี้ไม่ได้บ่งบอกว่าผมจะต้องนำหน้าอักษรขึ้นบรรทัดใหม่โดยเครื่องหมาย? อะไรคือวิธีที่เหมาะสมในการแนะนำsedให้ตีความลำดับ escape เช่น\nในข้อความที่แทนที่
sedมา ในท้ายที่สุดมันอาจจะเหมาะสมที่จะใช้ awk ดังนั้นคุณคิดอย่างไรเกี่ยวกับการตีความของ manpage ของ BSD sed ที่ฉันยกมา?