Qual é a melhor maneira de converter CRLFs em feeds de linha em arquivos no Linux?
Eu já vi comandos sed , mas há algo mais simples?
linux
carriage-return
JoelFan
fonte
fonte
Respostas:
Use este comando:
O contrário:
Esses comandos são encontrados no pacote tofrodos (nas distribuições mais recentes), que também fornece os dois wrappers unix2dos e dos2unix que imitam as ferramentas unix antigas com o mesmo nome.
fonte
find . -name '*.txt' -print0 | xargs -null fromdos
Use
dos2unix
.fonte
Eu prefiro perl :
Mas isso é adequado para meus usos e é muito fácil me lembrar. Nem todos os sistemas possuem um comando dos2unix, mas a maioria dos quais trabalho possui um intérprete perl.
Outro é recode , um poderoso substituto para dos2unix e iconv; está disponível no pacote "recode" nos repositórios Debian:
Para fãs do awk :
... e sed :
E agora, apenas um pouco menos complicado do que excluir os CRs manualmente em um editor hexadecimal, diretamente de um de nossos amigos stackoverflow.com , utilizável com o intérprete de carne bovina (localizado no repositório Debian de sua vizinhança),
dos2unix em brainfuck !
muito obrigado a jk por perder uma hora de sua vida escrevendo isso!
fonte
Eu faço isso no Bash :
fonte
Eu acho que você pode usar
tr
também (embora eu não tenha arquivos de formato engraçado para tentar):fonte
No vi ou no Vim :
fonte
Eu achei uma maneira muito fácil… Abrir arquivo com nano: ## nano file.txt
pressione Ctrl + O para salvar, mas antes de pressionar Enter, pressione: Alt + D para alternar entre finais de linha DOS e Unix / Linux, ou: Alt + M para alternar entre finais de linha Mac e Unix / Linux e pressione Enter para salvar e Ctrl + X para sair.
fonte
Alt+d
. Às vezes, alt é interceptado pelo programa do terminal, então você pode usá-loesc+d
.Eu prefiro Vim e
:set fileformat=unix
. Embora não seja o mais rápido, ele me dá uma prévia. É especialmente útil no caso de um arquivo com finais mistos.fonte
Se você deseja um método GUI, tente o editor de texto do Kate (outros editores de texto avançados também podem lidar com isso). Abra o achado / substituir diálogo ( Ctrl+ R), e substituir
\r\n
com\n
. (NB: você precisará escolher "Expressão regular" na lista suspensa e desmarcar "Somente seleção" nas opções.)EDIT: Ou, se você simplesmente deseja converter para o formato Unix, em seguida, usar a opção de menu
Tools
>End of Line
>Unix
.fonte
\r\n
para\n
, em seguida, usando a pesquisa / substituição é mais fácil do que lembrar que os usos do sistema operacional que de fim de linha. ;)Cole isso no script Python dos2unix.py .
Deve funcionar em qualquer plataforma com o Python instalado. Domínio público.
fonte
CR LF
paraLF
usar o awk :Exemplo de uso:
Explicação:
-v RS='\r?\n'
conjuntos RS variáveis ( entrada r ecord s eparator) para\r?\n
, ou seja, entrada é lido linha por linha separada por LF (\n
) que pode (?
) ser precedida por CR (\r
).1
é o script que o awk executa. Um script consiste emcondition { action }
. Nesse caso,1
é a condição que é avaliada como verdadeira. A ação é omitida; portanto, a ação padrão é executada, o que significa imprimir a linha atual (que também pode ser escrita como{print $0}
ou simplesmente{print}
).LF
paraCR LF
: É possível definir a variávelORS
( o utput r ecord s eparator) para modificar as extremidades da linha de saída. Exemplo:fonte
Eu usei esse script para arquivos que eu precisava para transferir arquivos de emergência de um sistema Windows para um sistema Unix.
find . -type f
Localiza todos os arquivos, recursivamente no diretório em que você está executando o comando
xargs file
Passe-o para o programa de arquivos para obter uma análise do arquivo.
grep CRLF
Queremos apenas a saída do arquivo que mostra CRLF.
cut -d: -f1
Obtenha a saída até a cor. descartar o resto. Devemos ter apenas um nome de arquivo agora
xargs dos2unix
Passe o nome do arquivo para o programa dos2unix usando xargs .
fonte