Saya memerlukan utilitas konversi / skrip yang akan mengkonversi file dump .sql yang dihasilkan pada Mac menjadi satu yang dapat dibaca di Windows. Ini adalah kelanjutan dari masalah yang saya miliki di sini . Masalahnya tampaknya dengan pemformatan baris baru dalam file teks, tetapi saya tidak dapat menemukan alat untuk membuat konversi ...
133
Jawaban:
Windows menggunakan
carriage return
+line feed
untuk baris baru:Unix hanya menggunakan
Line feed
untuk baris baru:Sebagai kesimpulan, cukup ganti setiap kejadian
\n
dengan\r\n
.Keduanya
unix2dos
dandos2unix
tidak secara default tersedia di Mac OSX.Untungnya, Anda cukup menggunakan
Perl
ataused
melakukan pekerjaan itu:Cuplikan kode dari:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
sumber
sed
perintah untuk UNIX ke DOS tidak bekerja untuk saya pada OS X Lion - itu hanya menyisipkan teks "r" pada akhir setiap baris. Theperl
perintah bekerja sekalipun.sed
, tetapi Anda dapat mengatasinya tanpa menginstal Homebrew, gnu-sed atau unix2dos: Gunakansed -e 's/$/^M/' inputfile > outputfile
, di mana^M
karakter kontrol dihasilkan pada baris perintah viaCtrl+V Ctrl+M
.$
sebelum tanda kutip tunggal yang berisi perintah sed:sed $'s/\r$//'
Penjelasan: bash menerjemahkan backslash-escapes dalam$'...'
string. Lihat gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html untuk detailnya.Ini adalah versi perbaikan dari jawaban Anne - jika Anda menggunakan perl, Anda dapat melakukan pengeditan pada file 'in-place' daripada membuat file baru:
sumber
Can't do inplace edit on file: Permission denied.
, dan menghapus file. Lihatlah ke utilitas lain sebagai gantinya.Anda dapat menginstal unix2dos dengan Homebrew
Maka Anda dapat melakukan ini:
Anda juga dapat mengonversi file dos ke unix:
sumber
dos2unix
. Anda pasti maubrew install dos2unix
.brew install unix2dos
ataubrew install dos2unix
berfungsi dengan baik. Mereka menginstal paket yang sama. Gunakan nama mana saja yang berbicara kepada Anda :)port install dos2unix
.Anda mungkin ingin unix2dos :
Anda dapat menjalankan
unix2dos
mesin DOS / Windows menggunakan cygwin atau di Mac menggunakan MacPorts .sumber
Hanya melakukan
tr
delete:sumber
wc -l
).tr
perintah untuk melakukan berbagai konversi. Gunakanhexdump
atau serupa untuk mencari tahu konvensi seperti apa end-of-line sekarang digunakan dalam file.find ./ -type f -exec dos2unix {} \;
untuk secara rekursif mengubah semua akhir baris dalam folder saat inisumber
vim
juga dapat mengkonversi file dari format UNIX ke DOS. Sebagai contoh:sumber
Berikut ini adalah skrip lengkap berdasarkan jawaban di atas bersama dengan pemeriksaan kewarasan dan bekerja pada Mac OS X dan harus bekerja pada sistem Linux / Unix lain juga (meskipun ini belum diuji).
sumber
Inilah pendekatan yang sangat sederhana, bekerja dengan baik untuk saya, dengan hormat dari Davy Schmeits's Weblog :
Di mana foo adalah file yang memiliki karakter Control + M di akhir baris, dan foo2 file baru yang Anda buat.
sumber
Di Yosemite OSX, gunakan perintah ini:
di mana
^M
urutan dicapai dengan menekan Ctrl+ Vlalu Enter.sumber
sed
tidak memahami backslash-escapes seperti\r
dan `` \ n` dan karena itu juga dapat menggunakannya dalam substitusi. Anda sebenarnya tidak harus memasukkan kontrol-M harfiah untuk merujuk ke karakter itu (atau yang lain). Prinsip menggunakansed
(dan-i
) untuk melakukan konversi jenis apa pun adalah sangat bagus, karena, tidak sepertitr
, Anda tidak terbatas pada "satu karakter pada satu waktu."Memperluas jawaban Anne dan JosephH, menggunakan perl dalam skrip perl pendek, karena saya terlalu malas untuk mengetikkan perl-one-liner saat itu juga.
Buat file, beri nama misalnya "unix2dos.pl" dan letakkan di direktori di jalur Anda. Edit file untuk memuat 2 baris:
Dengan asumsi bahwa "perl yang" mengembalikan "/ usr / bin / perl" pada sistem Anda. Jadikan file tersebut dapat dieksekusi (chmod u + x unix2dos.pl).
Contoh:
$ echo "hello"> xxx
$ od -c xxx (memeriksa apakah file diakhiri dengan nl)
0000000 halo \ n
$ unix2dos.pl xxx
$ od -c xxx (memeriksa bahwa itu berakhir sekarang di cr lf)
0000000 halo \ r \ n
sumber
Dalam Xcode 9 di panel kiri buka / pilih file Anda di navigator proyek . Jika file tidak ada, obat-dan-jatuhkan ke navigator proyek .
Di panel kanan temukan Pengaturan Teks dan ubah Line Endings ke Windows (CRLF) .
Screendump XCode
sumber