ฉันมีคำสั่งทดแทน sed ว่าผมต้องการที่จะเข้ากันได้กับ BSD sed
เช่นเดียวกับ sed
GNU นิพจน์ทั่วไปที่ขยายเพิ่มไม่ใช่ปัญหาเนื่องจากฉันไม่ต้องการใช้ในกรณีนี้ ปัญหาหลักของฉันคือความแตกต่างในวิธีที่ทั้งสอง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 sed
manpage:
ในการระบุอักขระขึ้นบรรทัดใหม่ในสตริงการแทนที่ให้นำหน้าด้วยแบ็กสแลช
นี้ไม่ได้บ่งบอกว่าผมจะต้องนำหน้าอักษรขึ้นบรรทัดใหม่โดยเครื่องหมาย? อะไรคือวิธีที่เหมาะสมในการแนะนำsed
ให้ตีความลำดับ escape เช่น\n
ในข้อความที่แทนที่
sed
มา ในท้ายที่สุดมันอาจจะเหมาะสมที่จะใช้ awk ดังนั้นคุณคิดอย่างไรเกี่ยวกับการตีความของ manpage ของ BSD sed ที่ฉันยกมา?