Preciso de um utilitário / script de conversão que converta um arquivo .sql dump gerado no Mac para um legível no Windows. Esta é a continuação de um problema que tive aqui . O problema parece estar com a formatação de nova linha em arquivos de texto, mas não consigo encontrar uma ferramenta para fazer a conversão ...
133
Respostas:
O Windows usa
carriage return
+line feed
para nova linha:O Unix usa apenas
Line feed
para nova linha:Em conclusão, basta substituir todas as ocorrências de
\n
por\r\n
.Ambos
unix2dos
edos2unix
não estão disponíveis por padrão no Mac OSX.Felizmente, você pode simplesmente usar
Perl
oused
fazer o trabalho:Fragmento de código de:
http://en.wikipedia.org/wiki/Newline#Conversion_utilities
fonte
sed
comando do UNIX para o DOS não funciona para mim no OS X Lion - apenas insere o texto "r" no final de cada linha. Operl
comando funciona embora.sed
, mas você pode contorná-lo sem instalar o Homebrew, gnu-sed ou unix2dos: Usesed -e 's/$/^M/' inputfile > outputfile
, onde^M
é um caractere de controle produzido na linha de comandoCtrl+V Ctrl+M
.$
antes da aspas simples que contém o comando sed:sed $'s/\r$//'
Explicação: o bash decodifica escapes de barra invertida em$'...'
seqüências de caracteres. Consulte gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html para obter detalhes.Esta é uma versão aprimorada da resposta de Anne - se você usar perl, poderá editar o arquivo 'in-loco' em vez de gerar um novo arquivo:
fonte
Can't do inplace edit on file: Permission denied.
e excluir o arquivo. Procure outros utilitários.Você pode instalar o unix2dos com o Homebrew
Então você pode fazer isso:
Você também pode converter arquivos dos para unix:
fonte
dos2unix
. Você vai quererbrew install dos2unix
.brew install unix2dos
oubrew install dos2unix
funciona bem. Eles instalam o mesmo pacote. Use qualquer nome fala com você :)port install dos2unix
.Você provavelmente quer o unix2dos :
Você pode executar
unix2dos
em sua máquina DOS / Windows usando o cygwin ou no seu Mac usando o MacPorts .fonte
Basta
tr
excluir:fonte
wc -l
).tr
comando para realizar várias conversões. Usehexdump
ou similar para descobrir exatamente que tipo de convenção de fim de linha agora é usada no arquivo.find ./ -type f -exec dos2unix {} \;
para converter recursivamente todas as terminações de linha na pasta atualfonte
vim
também pode converter arquivos do formato UNIX para DOS. Por exemplo:fonte
A seguir, é apresentado um script completo, com base nas respostas acima, junto com a verificação de integridade e funciona no Mac OS X e também deve funcionar em outros sistemas Linux / Unix (embora isso não tenha sido testado).
fonte
Aqui está uma abordagem realmente simples, que funcionou bem para mim, cortesia do Weblog de Davy Schmeits :
Onde foo é o arquivo que possui os caracteres Control + M no final da linha e foo2 o novo arquivo que você está criando.
fonte
No Yosemite OSX, use este comando:
onde a
^M
sequência é alcançada pressionando Ctrl+ e Vdepois Enter.fonte
sed
não entendem barra invertida-escapa, como\r
e `` \ n` e, portanto, também pode usá-los na substituição. Na verdade, você não precisa inserir um controle-M literal para se referir a esse caractere (ou a qualquer outro). O princípio de usarsed
(e-i
) para fazer qualquer tipo de conversão desse tipo é muito bom, porque, diferentementetr
, você não está limitado a "um caractere de cada vez".Expandindo as respostas de Anne e JosephH, usando perl em um script curto de perl, já que tenho preguiça de digitar o perl-one-liner muito tempo.
Crie um arquivo nomeado, por exemplo, "unix2dos.pl" e coloque-o em um diretório em seu caminho. Edite o arquivo para conter as 2 linhas:
Supondo que "qual perl" retorne "/ usr / bin / perl" em seu sistema. Torne o arquivo executável (chmod u + x unix2dos.pl).
Exemplo:
$ echo "hello"> xxx
$ od -c xxx (verificando se o arquivo termina com um nl)
0000000 olá \ n
$ unix2dos.pl xxx
$ od -c xxx (verificando se termina agora em cr lf)
0000000 olá \ r \ n
fonte
No Xcode 9, no painel esquerdo, abra / escolha seu arquivo no navegador do projeto . Se o arquivo não estiver lá, remova-o e solte-o no navegador do projeto .
No painel direito, localize Configurações de texto e altere Terminais de linha para Windows (CRLF) .
XCode screendump
fonte