Gunakan OS X dalam skrip untuk menemukan string dan menambahkan baris di bawahnya termasuk karakter baris baru

4

Saya telah belajar bahwa versi sed BSD yang disertakan dengan OS X tidak memberikan cara intuitif untuk menambahkan baris baru. Saya telah menemukan beberapa catatan tentang itu, tetapi saya belum mengerti, bagaimana memperluas contoh untuk memecahkan masalah saya.

Saya perlu menambahkan beberapa baris ke file dan menemukan bahwa baris yang saya tambahkan tidak menyertakan karakter baris baru.

Script shell saya saat ini berisi yang berikut:

sed '/match string/  a\
newline string' ./inputfile > ./outputfile

Dan, saya mencoba menerapkan tip yang saya temukan di sini Baris baru dalam pada Mac OS X

Michael Prescott
sumber

Jawaban:

4

Sudahlah. Saat memformat ulang bagian kode dari pertanyaan ini, solusinya menjadi jelas:

Saya menemukan bahwa yang berikut ini melakukan apa yang saya butuhkan:

sed '/match string/  a\
newline string \
' ./inputfile > ./outputfile
Michael Prescott
sumber
1
Untuk melakukan itu pada satu baris, Anda dapat menggunakan kutipan ANSI-C untuk membatalkan penghapusan \n. Garis miring terbalik tambahan diperlukan sebelum baris baru. echo $'111\n333' | sed $'/111/a\\\n222\\\n'.
Lri