Saya memiliki perintah penggantian sed yang saya ingin kompatibel dengan BSD sedserta GNU sed. Ekspresi reguler yang diperluas bukan masalah karena saya tidak membutuhkannya dalam kasus ini. Masalah utama saya adalah perbedaan dalam cara kedua sedkarakter menafsirkan urutan pelarian dalam string pengganti . String pengganti saya berisi tab dan baris baru dan saya ingin agar terlihat di string perintah untuk kemudahan pemeliharaan, namun, BSD sedtidak menafsirkan urutan pelarian dan GNU sed melakukannya . Apa cara yang tepat untuk menginstruksikan seduntuk menafsirkan urutan melarikan diri ini pada BSD? Dua snippet berikut melambangkan masalah saya:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
yeilds
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
hasil panen
AntBnC
Jelas, \ndan \ttidak ditafsirkan sebagai urutan pelarian oleh BSDsed
Sekarang, untuk pertanyaan saya. Menurut sedmanual BSD :
Untuk menentukan karakter baris baru dalam string pengganti, awali dengan garis miring terbalik.
Apakah ini menyiratkan bahwa saya harus mendahului baris baru literal dengan garis miring terbalik? Apa cara yang tepat untuk menginstruksikan seduntuk menafsirkan urutan melarikan diri seperti \ndalam teks pengganti?
sed . Pada akhirnya mungkin masuk akal untuk menggunakan awk. Jadi apa yang Anda pikirkan tentang interpretasi dari sed sedpage BSD yang saya kutip?