GNU/Linux >> Belajar Linux >  >> Linux

Bisakah Sed Mengganti Karakter Baris Baru?

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 :

  1. buat label melalui :a
  2. tambahkan baris saat ini dan berikutnya ke ruang pola melalui N
  3. jika kita sebelum baris terakhir, bercabang ke label yang dibuat $!ba ($! berarti tidak melakukannya di baris terakhir (karena seharusnya ada satu baris baru terakhir)).
  4. akhirnya substitusi mengganti setiap baris baru dengan koma pada ruang pola (yang merupakan keseluruhan file).

Linux
  1. Menggunakan Sed untuk Mencari &mengganti garis di antara rentang pola

  2. Bagaimana Cara Mengganti String Dalam File?

  3. Bagaimana Cara Menggunakan Sed Untuk Mengganti String Multi-baris?

  1. Bagaimana Cara Menggunakan Sed Atau Ex Untuk Mengganti Blok (Kode multi-baris) Dengan Blok Teks (kode) Baru?

  2. Sed Hapus Karakter Dari Baris Baru?

  3. Bagaimana melakukan sed like text ganti dengan python?

  1. Cara mengganti string dalam banyak file di baris perintah linux

  2. temukan teks yang cocok dan ganti baris berikutnya

  3. ganti kemunculan string ke-n di setiap baris file teks