Converter finais de linhas Unix em Windows
Recentemente, voltei ao Windows a partir do Linux. Eu tenho alguns arquivos com CRLFs, alguns com LFs e outros que são misturados. Existe um utilitário que me ajudará a encontrar todos os meus arquivos tocados pelo Unix e convertê-los em arquivos terminados em CRLF adequados?
O utilitário deve ser executado no Windows, não no Linux. Eu já mudei. Prefiro não instalar o Cygwin se puder evitá-lo.
relacionado: consulte superuser.com/questions/38744 superuser.com/questions/27060 superuser.com/questions/52044 ... qualquer ferramenta mencionada nesses pode ser revertida para realizar o que você quer fazer
— quackote quixote
— ukanth 17/11/2009
As soluções nas chamadas perguntas duplicadas são executadas em plataformas Linux ou executam a conversão oposta. Eu não tenho mais linux. Eu tenho janelas
— Matthew Scouten 17/11/2009
todos eles estão disponíveis para Windows via Cygwin, GnuWin32, UnxUtils ou similares. Eu acredito que existem scripts do Powershell que podem fazer isso também, embora eu não conheça o suficiente para fornecer links.
@ Quack: A pergunta afirma especificamente que o usuário está procurando algo que fará o trabalho no Windows, usando um utilitário do Windows.
Você pode convertê-los com o unix2dosutilitário em sua plataforma Linux. Existem unix2dos versões disponíveis para Windows também.
Se você possui o Perl instalado, também pode usar este liner:
Fiz algo semelhante a isso, mas usei python.
— Matthew Scouten 19/11/2009
@ Matthew Scouten: então ... você encontrou um utilitário unix que roda no Windows! Parabéns!
sim e não. Eu escrevi meu próprio utilitário. Eu poderia ter feito isso desde o início, mas esperava economizar 30 minutos. Infelizmente eu não estava feliz com nenhum utilitário disponível. O mais próximo que encontrei corrompeu todos os arquivos binários no diretório.
Há problemas na conversão com dos2unix e unix2dos - se o arquivo tiver misturado CRLF e LF, pode haver algumas ocorrências que não seriam substituídas.
Aqui está uma maneira fácil e rápida.
Arraste e solte o arquivo de texto no Chrome (não conheço outros navegadores) e, em seguida, recorte e cole no arquivo original :)
— user45832
hehe ... esta resposta me fez lol
todos os navegadores podem ler as terminações de linha do Unix muito bem, incluindo o IE. Mas, mesmo assim, o wordpad também pode fazer isso, e o bloco de notas moderno também . O que é importante aqui é como converter vários arquivos automaticamente
O que eu achei melhor para percorrer recursivamente as pastas, permitir filtros de arquivos e permitir uma pesquisa simples por "\ r \ n" e substituí-lo por apenas "\ n" foi o Notepad ++ .
O Notepad ++ é um dos melhores programas de bloco de notas de código aberto para Windows. É muito simples e poderoso. Ele lidou com a linha que finaliza a pesquisa / substituição. Um contratado verifica vários arquivos .c e .h em nosso repositório com terminações de linha Linux \ r \ n, mas como a maioria das pessoas padronizou as ferramentas de construção do Windows / Eclipse, os arquivos não serão construídos até que as terminações de linha sejam convertidas .
Eu acho que você inverteu as terminações lá: linux é \ n, janelas é \ r \ n
O Notepad ++ também possui um Edit -> EOL Conversionmenu simples se o número de arquivos a serem convertidos for pequeno.
Use o canivete suíço .
Por exemplo: sfk addcr -dir . -file .txt -norec
altera as terminações LF em CR / LF para Windows, em todos os arquivos .txt do diretório atual, mas NÃO em subdiretórios (sem recursão).
Mas este programa faz muito mais do que apenas isso.
Eu não especificar -norecporque quero recursão para acontecer, mas não parece que isso
No Cygwin, você pode converter entre arquivos Windows Unix e "DOS" AKA Windows usando dois utilitários embutidos:
Converta para o formato DOS CR / LF:
Converta de volta para o formato Unix CR:
O arquivo é deixado no local com o mesmo nome.
Apreciar! Rick
Às vezes, isso é chamado dos2unixou unix2doscaso você não consiga encontrá-lo como u2d ou d2u. Há tambémunix2mac
Vou jogar esta solução lá fora. Git fará isso. Veja este post sobre isso
Então, teoricamente, você poderia fazer isso para converter uma árvore inteira
Mude crlfpara lfse você quiser ir para o outro lado. NOTA: você ainda não terminou, continue lendo
Digite git statuspara ver quais arquivos serão afetados. Pode ser necessário adicionar linhas como
etc para .gitattributesevitar a conversão de certos arquivos. Você também pode marcar explicitamente certos arquivos como texto
Em seguida, basta repetir essas 2 linhas depois de editar .gitattributes
Em seguida, use git statusnovamente para ver quais arquivos serão alterados. Quando tiver certeza de que todos os arquivos que você deseja afetar estão listados git status, confirme
agora verifique todos os arquivos novamente
Agora eles devem ter quaisquer que sejam os finais de linha desejados.
** NOTA: Se você já estava usando o git, pule os 3 primeiros comandos. Se você não estava usando o git, agora pode excluir o .gitattributesarquivo e a .gitpasta.
** Faça backup dos seus arquivos: git rm --cached -reles serão excluídos (embora eles estejam teoricamente no seu repositório git (a pasta .git), que é como eles são restaurados pelo último comando git reset --hard. acima.
Use um editor de texto que entenda as duas terminações de linha, como SciTE ou Notepad ++, se você não precisar converter todas as linhas em todos os seus arquivos, mas não queira ver o arquivo inteiro agrupado na primeira linha.
Foi o que eles disseram quando tive o problema inverso ao mudar para o Linux. Continuei encontrando ferramentas que tinham problemas com as terminações de linhas erradas. E NADA lida razoavelmente com terminações de linhas mistas.
— Matthew Scouten 31/03
@ Matthew Eu sei que o scite lida com as terminações de linha unix / windows corretamente. Eu o uso para esse fim nas janelas vms que corro no linux ao editar arquivos no sistema host.
Estou certo de que os editores que você recomenda funcionarão perfeitamente. mas em algum momento, precisarei alimentar o arquivo de texto para alguma outra ferramenta, e essa ferramenta NÃO será. Nesse ponto, ter um editor de texto que lide bem com as coisas tornará as coisas piores, ocultando o problema. e aposto que ele ainda lida mal com finais mistos (ou pelo menos com peculiaridades).
+1 para a opção do bloco de notas ++ para converter finais de mentira. E aqui está como fazer mais especificamente (consulte o "método 2"): staffwww.fullcoll.edu/brippe/csci123/saveAsUnix.aspx
Notepad ++ já tem as soluções para converter finais de linha, codificações entre outras coisas
Existem muitas maneiras de traduzir os caracteres eoln nos arquivos TEXT, e todo mundo tem um favorito.
Mas eu sempre transfiro arquivos do Linux para o Windows no modo BINARY, depois abro arquivos TEXT no Windows com um editor capaz de abrir os dois tipos e salvá-los de qualquer forma, se necessário.
Eu usei o Programmers File Editor para isso, mas o Notepad ++ também pode fazê-lo. O WordPad também é útil [pelo menos para exibir arquivos terminados por LF].
Estou pensando nos arquivos de texto simples que podem ter se originado no Linux e precisam ser legíveis no mundo (padrão padrão) do Windows. Não sei ao certo o que você quis dizer com 'arquivos com toque unix'.
O problema com esse método é que ele faz apenas um arquivo por vez.
'arquivos com toque unix' é a minha palavra para arquivos CRLF-LF somente LF e mistos. Depois que um arquivo é editado nas ferramentas unix-oid, ele tende a ser "infectado" com linhas somente LF.
O que eu realmente estava dizendo era que, escolhendo o software certo para visualizar arquivos de texto, eles não precisam ser convertidos. Aliás, evitei levá-lo à tarefa de descrever os arquivos finalizados como CRLF como 'adequados'. Depende inteiramente do seu ponto de vista. Cada método é adequado em seu próprio sistema operacional. Quando um arquivo é movido para um sistema operacional diferente, descobrimos que Win / Mac / Linux são todos diferentes. Eu suspeito que o método Unix / Linux é o método original.
— pavium 19/11/09
Você suspeita errado. O padrão ASCII foi desenvolvido originalmente para máquinas de teletipo e exigiu CRLF. A maioria dos protocolos da Internet (incluindo HTTP, SMTP, FTP, IRC e muitos outros) também exige terminações CRLF (a maioria das implementações aceita LF nua para compatibilidade com programas Unix não compatíveis). Nesse caso, o Windows está seguindo o padrão e o Unix e o Mac estão quebrando.
Para oferecer mais opções (mesmo que eu tenha gostado mais da resposta de hack do user45832 ):
Eu acho que um programa FTP GUI fará isso automaticamente
Linha única em lote / DOS (remove linhas vazias) :
Tenho os dois últimos daqui
Obtenha o AWK para Windows .
Converta as terminações de linha Unix em finais de linha do Windows:
Converta as terminações de linha do Windows em finais de linha Unix:
As versões mais antigas de awknão incluem a subfunção Nesses casos, use o mesmo comando, mas substitua awkpor gawkou nawk.
Na Wikipedia, há uma solução no cmd:
No PowerShell, existem várias maneiras de fazer isso, revertendo o que foi feito nesta pergunta .
Também é possível fazer isso no VBScript e JScript, que também são ferramentas que já estão disponíveis no Windows sem a instalação de um aplicativo de terceiros.
Minha distribuição Linux tem dois pequenos utilitários chamados fromdose todosque eu uso para esta tarefa.
O OP está pedindo uma ferramenta Windows
Eu costumava abrir o arquivo em 'editar' e salvar como o trabalho foi feito ...
o que é "editar"? não existe tal ferramenta no windows 10
obviamente eu usei editno DOS mas esta questão é sobre o Windows
editcostumava fazer parte do Windows até Windows XP. Minha resposta tem cerca de 8 anos. Nesse tempo editera parte da instalação do Windows em muitos casos ...