Мне нужна утилита / сценарий преобразования, который преобразует файл дампа .sql, созданный на Mac, в файл, читаемый в Windows. Это продолжение проблемы я имел здесь . Проблема, похоже, связана с форматированием новой строки в текстовых файлах, но я не могу найти инструмент для преобразования ...
133
Ответы:
Windows использует
carriage return
+line feed
для новой строки:Unix использует только
Line feed
для новой строки:В заключение просто замените каждое появление
\n
на\r\n
.Оба
unix2dos
иdos2unix
по умолчанию недоступны в Mac OSX.К счастью, вы можете просто использовать
Perl
илиsed
для выполнения работы:Фрагмент кода из:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
источник
sed
для UNIX to DOS не работает для меня в OS X Lion - она просто вставляет текст «r» в конце каждой строки.perl
Команда работает , хотя.sed
, но вы можете обойти ее, не устанавливая Homebrew, gnu-sed или unix2dos: используйтеsed -e 's/$/^M/' inputfile > outputfile
, где^M
- управляющий символ, созданный в командной строке черезCtrl+V Ctrl+M
.$
перед одинарной кавычкой, содержащей команду sed:sed $'s/\r$//'
Пояснение: bash декодирует экранирование обратной косой черты в$'...'
строках. Подробнее см. Gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html .Это улучшенная версия ответа Анны - если вы используете perl, вы можете редактировать файл «на месте», а не создавать новый файл:
источник
Can't do inplace edit on file: Permission denied.
и удалить файл. Вместо этого поищите другие утилиты.Вы можете установить unix2dos с Homebrew
Тогда вы можете сделать это:
Вы также можете конвертировать файлы dos в unix:
источник
dos2unix
. Вы захотитеbrew install dos2unix
.brew install unix2dos
либоbrew install dos2unix
нормально работает. Они устанавливают один и тот же пакет. Используйте то имя, которое вамport install dos2unix
.Вероятно, вам нужен unix2dos :
Вы можете запускать
unix2dos
на своем компьютере DOS / Windows с помощью cygwin или на своем Mac с помощью MacPorts .источник
Просто
tr
удалите:источник
wc -l
).tr
команду для выполнения различных преобразований. Используйтеhexdump
или подобное, чтобы узнать, какое именно соглашение о конце строки теперь используется в файле.find ./ -type f -exec dos2unix {} \;
чтобы рекурсивно преобразовать все окончания строк в текущей папкеисточник
vim
также может конвертировать файлы из формата UNIX в формат DOS. Например:источник
Ниже приведен полный сценарий, основанный на приведенных выше ответах вместе с проверкой работоспособности и работающий в Mac OS X, а также должен работать в других системах Linux / Unix (хотя это не было проверено).
источник
Вот действительно простой подход, который хорошо сработал для меня, любезно предоставленный блогом Дэви Шмейтс :
Где foo - это файл с символами Control + M в конце строки, а foo2 - новый файл, который вы создаете.
источник
В Yosemite OSX используйте эту команду:
где
^M
последовательность достигается нажатием Ctrl+ Vзатем Enter.источник
sed
он понимает обратные\r
косые черты, такие как и `\ n`, и поэтому также может использовать их при замене. На самом деле вам не нужно вводить буквальный control-M, чтобы ссылаться на этот символ (или любой другой). Принцип использованияsed
(и-i
) для любого преобразования такого рода очень хорош, потому что, в отличие от этогоtr
, вы не ограничены «одним символом за раз».Расширяя ответы Anne и JosephH, используя perl в коротком perl-скрипте, я слишком ленив, чтобы печатать perl-one-liner очень долго.
Создайте файл с именем, например, "unix2dos.pl" и поместите его в каталог на своем пути. Отредактируйте файл, чтобы он содержал 2 строки:
Предполагая, что "which perl" возвращает "/ usr / bin / perl" в вашей системе. Сделайте файл исполняемым (chmod u + x unix2dos.pl).
Пример:
$ echo "hello"> xxx
$ od -c xxx (проверка того, что файл заканчивается на nl)
0000000 hello \ n
$ unix2dos.pl xxx
$ od -c xxx (проверяет, заканчивается ли он теперь на cr lf)
0000000 привет \ r \ n
источник
В Xcode 9 на левой панели откройте / выберите файл в навигаторе проекта . Если файла нет, добавьте его в навигатор проекта .
На правой панели найдите Параметры текста и измените Концы строк на Windows (CRLF) .
XCode screendump
источник