Apakah ada masalah dengan sed dan karakter baris baru?
Saya memiliki file test.txt dengan konten berikut
aaaaa
bbbbb
ccccc
ddddd
Berikut ini tidak berfungsi:sed -r -i 's/n/,/g' test.txt
Saya tahu bahwa saya dapat menggunakan tr
untuk ini, tetapi pertanyaan saya adalah mengapa tampaknya tidak mungkin dengan sed.
Jika ini adalah efek samping dari pemrosesan file baris demi baris, saya akan tertarik mengapa ini terjadi. Saya pikir grep
menghapus baris baru. Apakah sed melakukan hal yang sama?
Jawaban yang Diterima:
Dengan GNU sed
dan berikan POSIXLY_CORRECT
tidak ada di lingkungan (untuk input satu baris):
sed -i ':a;N;$!ba;s/n/,/g' test.txt
Dari https://stackoverflow.com/questions/1251999/sed-how-can-i-replace-a-newline-n :
- buat label melalui
:a
- tambahkan baris saat ini dan berikutnya ke ruang pola melalui
N
- jika kita sebelum baris terakhir, bercabang ke label yang dibuat
$!ba
($!
berarti tidak melakukannya di baris terakhir (karena seharusnya ada satu baris baru terakhir)). - akhirnya substitusi mengganti setiap baris baru dengan koma pada ruang pola (yang merupakan keseluruhan file).