Apa cara terbaik untuk mengonversi CRLF ke umpan baris dalam file di Linux?
Saya telah melihat perintah sed , tetapi adakah yang lebih sederhana?
linux
carriage-return
JoelFan
sumber
sumber
Jawaban:
Gunakan perintah ini:
Sebaliknya:
Perintah-perintah ini ditemukan dalam paket tofrodos (pada distribusi terbaru), yang juga menyediakan dua pembungkus unix2dos dan dos2unix yang meniru alat unix lama dengan nama yang sama.
sumber
find . -name '*.txt' -print0 | xargs -null fromdos
Gunakan
dos2unix
.sumber
Saya lebih suka perl :
Tapi itu sangat cocok untuk kegunaan saya, dan sangat mudah bagi saya untuk mengingatnya. Tidak semua sistem memiliki perintah dos2unix, tetapi sebagian besar yang saya kerjakan memiliki penerjemah perl.
Lainnya adalah recode , pengganti yang kuat untuk dos2unix dan iconv; itu tersedia dalam paket "recode" di repositori Debian:
Untuk penggemar awk :
... dan sed :
Dan sekarang, hanya sedikit lebih sedikit berbelit-belit daripada menghapus CR dengan tangan di hex editor, langsung dari salah satu teman stackoverflow.com kami , dapat digunakan dengan juru bahasa daging sapi (terletak di repositori Debian lingkungan yang ramah),
dos2unix di brainfuck !
terima kasih banyak kepada jk karena telah menghabiskan satu jam hidupnya untuk menulis ini!
sumber
Saya melakukan ini di Bash :
sumber
Saya pikir Anda dapat menggunakan
tr
, juga (meskipun saya tidak punya file format lucu yang bisa dicoba):sumber
In vi atau Vim :
sumber
Saya menemukan cara yang sangat mudah ... Buka file dengan nano: ## nano file.txt
tekan Ctrl + O untuk menyimpan, tetapi sebelum menekan Enter tekan: Alt + D untuk beralih antara akhir baris DOS dan Unix / Linux, atau: Alt + M untuk beralih antara Mac dan akhir baris Linux Unix / Linux lalu tekan Enter untuk menyimpan dan Ctrl + X untuk keluar.
sumber
Alt+d
. Terkadang alt dicegat oleh program terminal, jadi Anda bisa menggunakannyaesc+d
.Saya lebih suka Vim dan
:set fileformat=unix
. Meskipun bukan yang tercepat, itu memberi saya pratinjau. Ini sangat berguna dalam kasus file dengan akhiran campuran.sumber
Jika Anda menginginkan metode GUI, coba editor teks Kate (editor teks tingkat lanjut lainnya mungkin dapat menangani ini juga). Buka dialog temukan / Ganti ( Ctrl+ R), dan ganti
\r\n
dengan\n
. (NB: Anda harus memilih "Ekspresi reguler" dari tarik turun dan batalkan pilihan "Pilihan saja" dari opsi.)EDIT: Atau, jika Anda hanya ingin mengkonversi ke format Unix, kemudian gunakan pilihan menu
Tools
>End of Line
>Unix
.sumber
\r\n
untuk\n
kemudian menggunakan pencarian / ganti lebih mudah daripada mengingat OS mana yang menggunakan baris yang berakhiran. ;)Rekatkan ini ke skrip Python dos2unix.py .
Harus bekerja pada platform apa pun dengan Python diinstal. Area publik.
sumber
CR LF
untukLF
menggunakan awk :Contoh penggunaan:
Penjelasan:
-v RS='\r?\n'
mengatur variabel RS ( input r ecord s eparator) menjadi\r?\n
, artinya input dibaca baris demi baris dipisahkan oleh LF (\n
) yang dapat (?
) didahului oleh CR (\r
).1
adalah script awk dieksekusi. Sebuah skrip terdiri daricondition { action }
. Dalam hal ini,1
adalah kondisi yang bernilai true. Tindakan dihilangkan, sehingga tindakan default dijalankan, yang berarti mencetak baris saat ini (yang juga bisa ditulis sebagai{print $0}
atau hanya{print}
).LF
keCR LF
: Anda dapat mengatur variabelORS
( eparator r ecord s o utput ) untuk memodifikasi garis akhir dari output. Contoh:sumber
Saya menggunakan skrip ini untuk file yang saya perlukan untuk mentransfer file darurat dari sistem windows ke sistem unix.
find . -type f
Temukan semua file, secara rekursif di direktori tempat Anda menjalankan perintah
xargs file
Lulus ke program file untuk mendapatkan analisis file.
grep CRLF
Kami hanya ingin output file yang menunjukkan CRLF.
cut -d: -f1
Dapatkan output hingga ke warna. buang sisanya. Kami seharusnya hanya memiliki nama file sekarang
xargs dos2unix
Berikan nama file ke dos2unix program menggunakan xargs .
sumber