Apakah ada perintah Bash untuk mengonversi \ r \ n ke \ n?


19

Apakah ada perintah Bash untuk mengonversi \ r \ n ke \ n?

Ketika saya mengunggah skrip saya dari Windows ke Linux, saya memerlukan utilitas seperti ini untuk membuat semuanya berfungsi.


7
dos2unixbiasanya tersedia, jika tidaksed -e 's/\r$//'
— falstro

1
Tidak, tidak ada perintah Bash untuk itu, tetapi ada dos2unixyang merupakan program Unix / Linux untuk melakukan apa yang Anda inginkan.
— Dijeda sampai pemberitahuan lebih lanjut.

1
Mengapa Anda tidak menggunakan editor teks waras yang memungkinkan Anda memilih gaya baris baru saat menyimpan file?
— vtest

Jawaban:


28

Ada:

dos2unix

Ini adalah jawaban yang secara historis benar, meskipun dos2unix tidak selalu tersedia akhir-akhir ini.
— Jared

5

Terjemahan ( tr ) tersedia di semua Unix:

tr -d '\r'  # From \r\n line end (DOS/Windows), the \r will be removed so \n line end (Unix) remains.

1
Memiliki efek samping menghapus yang lain \rjuga. Mereka sangat jarang.
— ivan_pozdeev

5

Dengan sed dan temukan yang diakhiri dengan .txt, .php, .js, .css:

 sed -rie 's/\r\n/\n/' \
 $(find . -type f -iregex ".*\.\(txt\|php\|js\|css\)")

5

Ada utilitas Unix yang disebut convyang dapat mengkonversi akhir baris. Hal ini sering dipanggil dengan softlinks untuk u2datau d2uatau unix2dosatau dos2unix.

Selain itu ada utilitas yang dipanggil fromdosdan todos.


2

Menggunakan man 1 ed (yang mengedit file di tempat tanpa cadangan sebelumnya - tidak seperti: sed .. -i ".bak" ...):

ed -s file <<< $'H\ng/\r*$/s///\nwq'

Aku bahkan tidak tahu ed, tapi itu berhasil (lama tapi emas)
— dwana

Perintah ini berfungsi untuk saya ketika perintah dari jawaban lain tidak ada pada hosting bersama yang saya gunakan. Terima kasih :)
— FKasa

2

Melakukan ini dengan POSIX itu rumit:

  • POSIX Sed tidak mendukung \ratau \15. Bahkan jika itu terjadi, opsi di tempat -ibukanlah POSIX

  • POSIX Awk mendukung \rdan \15, bagaimanapun, -i inplacepilihannya bukan POSIX

  • d2u dan dos2unix bukan utilitas POSIX , tetapi ex adalah

  • POSIX ex tidak mendukung \r, \15, \natau\12

Untuk menghapus pengembalian carriage:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\r","");print>ARGV[1]}' file

Untuk menambahkan carriage return:

awk 'BEGIN{RS="\1";ORS="";getline;gsub("\n","\r&");print>ARGV[1]}' file


0

$ recode dos .. FILE
$ flip -u FILE

(Masing-masing juga ada untuk sistem non-Ubuntu, tetapi tautan ini berguna.)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.