Saya baru menggunakan sed tetapi saya telah bereksperimen dengan sed s/..../..../
(pengganti) untuk mengubah kalimat lengkap jika itu dalam satu baris tetapi saya tidak mengetahui solusi alternatif tentang bagaimana mengubah sebuah kalimat yang mungkin telah dipisahkan pada dua baris seperti:
Ini:
Lorem Ipsum is simply dummy text of the printing and typesetting industry.
sebenarnya ditulis sebagai ini:
Lorem Ipsum is simply dummy text of the
printing and typesetting industry.
Bagaimana Anda bisa mendeteksi ini atau mengkodekannya untuk mengganti seluruh kalimat walaupun itu ada di dua baris, bukan satu?
command-line
sed
DᴀʀᴛʜVᴀᴅᴇʀ
sumber
sumber
Jawaban:
Perintah berikut akan bekerja di kedua situasi:
Lebih banyak penjelasan: Bagaimana saya bisa menggunakan sed untuk mengganti string multi-line?
sumber
sed
, tidak lebih. Dan ini adalah pertanyaan judul. Judulnya bukan tentangperl
.Lorem
ada di baris terakhir, cacat itu berbagi dengan versimu.)Sementara sed dapat mencocokkan pola pada banyak baris (menggunakan perintah
N
atauH
untuk menambahkan baris berturut-turut sebelum cocok), ini jauh di luar zona nyamannya. Coba saja jika Anda suka rasa sakit.Perl dapat melakukan hal-hal semacam ini dengan baik. Gunakan
-p
sakelar untuk membuatnya memproses input standar satu rekaman pada satu waktu dan mencetak catatan yang dimodifikasi (à la sed), dan-000
untuk mengaktifkan mode paragraf (di mana catatan dipisahkan oleh garis kosong). Dalam ekspresi reguler,\s
cocok dengan karakter spasi putih termasuk baris baru.Jika Anda ingin meletakkan baris baru di teks pengganti ketika yang asli berisi, itu lebih rumit. Cara melakukannya tergantung pada kebutuhan Anda ke mana harus meletakkan baris baru.
sumber
sed
. Itu juga ditandai dengansed
, bukan denganperl
.sed tidak dapat dengan mudah membaca melintasi beberapa baris. Gunakan
perl -i -0pe 's/.../.../...'
sebagai gantinya.sumber
perl
lebih sederhana untuk Anda, ini tidak berarti bahwased
jarang sepadan dengan masalahnya.