Saya memiliki perintah penggantian sed yang saya ingin kompatibel dengan BSD sed
serta GNU sed
. Ekspresi reguler yang diperluas bukan masalah karena saya tidak membutuhkannya dalam kasus ini. Masalah utama saya adalah perbedaan dalam cara kedua sed
karakter 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 sed
tidak menafsirkan urutan pelarian dan GNU sed
melakukannya . Apa cara yang tepat untuk menginstruksikan sed
untuk 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, \n
dan \t
tidak ditafsirkan sebagai urutan pelarian oleh BSDsed
Sekarang, untuk pertanyaan saya. Menurut sed
manual 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 sed
untuk menafsirkan urutan melarikan diri seperti \n
dalam 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?