Conversão de formatos com recode
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 17 de junho de 2016
As convenções de fim de linha em sistemas operacionais podem trazer aborrecimentos quando um arquivo criado em sistemas Windows é levado para um sistema GNU/Linux, e vice-versa. Basicamente, o que temos no final de uma linha é um ou mais caracteres que nos levam para a próxima linha. A nomenclatura usada é dos tempos das máquinas de escrever, em que mudamos de linha (line feed, ou LF) e voltamos a máquina para a posição inicial (carriage return, ou CR).
Em sistemas *nix o fim de linha é assinalado pelo caracter line feed, ou seja, não existe um posicionamento na primeira coluna da próxima linha. Ao levar um arquivo deste tipo para sistemas Windows, temos algo do tipo:
abcde abcde abcde ...
Da mesma forma, ao levarmos arquivos criados em sistemas Windows para sistemas *nix, temos um caractere adicional no fim da linha (carriage return), que precisamos remover.
O comando recode é um pequeno utilitário que realiza diversos tipos de conversão, como por exemplo, a mudança de codificação, e as conversões entre sistemas. O problema é a sintaxe meio complicada, mas nada que alguns aliases não resolvam.
Com o comando recode podemos converter arquivos entre diversos formatos:
- DOS para Unix
recode dos/CR-LF..l1 arquivo.txt
- Unix para Windows
recode l1..windows-1250
- Unix para DOS
recode l1..dos/CR-LF
Para simplificar, podemos criar alguns aliases:
alias dos2unix='recode dos/CR-LF..l1' alias unix2win='recode l1..windows-1250' alias unix2dos='recode l1..dos/CR-LF'
Coloque as linhas acima no arquivo .bashrc
e você não precisa mais se preocupar
com a sintaxe do comando.
Para instalar o comando recode em sistemas Debian GNU/Linux e derivados, digite:
sudo apt-get install recode