você está aqui: Home  → Arquivo de Mensagens

Conversão de arquivos ASCII entre os ambientes MS-DOS e Unix e Linux

Colaboração: Jose Fernando Scheid Mascarenhas

Data de Publicação: 02 de Julho de 2007

O script efetua a conversão de arquivos ASCII (.txt) entre os ambientes MS-DOS e Unix/Linux. Os arquivos no formato .txt gerados no ambiente MS-DOS utilizam os caracteres 0x0d e 0x0a para delimitar suas linhas. Já no ambiente Unix/Linux, as linhas são delimitadas somente pelo caracter 0x0a. Quem já teve a oportunidade de trabalhar com o ambiente XENIX, com certeza utilizou as ferramentas dtox e xtod para efetuar tais conversões e posteriormente efetuar um ´doscp´ (mcopy no Linux) para ler/gravar os arquivos em disquete. O script dever ser copiado para o diretorio /usr/local/bin com o nome de xtod. Posteriormente executar o comando "ln xtod dtox" para criar o link. Se o script for executado com o nome de xtod a conversão será feita do formato Unix/Linux para o formato MS-DOS e ser for chamado como dtox a conversão será feita do formato MS-DOS para Unix/Linux.

Eu utilizo o script para imprimir arquivos .txt gerados no Linux em impressoras laser que às vezes costumam imprimir tudo na mesma linha.

Exemplos de utilização:

  $ xtod arq1.txt | lp -dhplaser
  
  $ cal 2007 | lp -dhpjet
  
  # Converte de Linux para MS-DOS
  $ xtod < arq_txt.linux > arq_txt.msdos
  
  # Converte de MS-DOS para Linux
  $ dtox < arq_txt.msdos > arq_txt.linux
  #! /bin/bash
  #
  #  @(#) xtod/dtox v.1.0 03/10/2005
  #
  #       Unitech Informatica Ltda
  #       Autor: J. Fernando Scheid Mascarenhas
  #  /usr/local/bin/xtod  - Converte arquivos ASCII do formato Unix para o formato DOS.
  #       ou
  #  /usr/local/bin/dtox  - Converte arquivos ASCII do formato DOS para o formato Unix.
  #
  #
  CMD_NAME=`basename $0`
  if [ ${CMD_NAME} = dtox ]
    then
    RUN_NAME="tr -d '\015'"
  else
    RUN_NAME="awk '{ printf(\"%s\r\n\"),\$0 }'"
  fi
  
  if [ $# -eq 0 ]
    then
    if [ -t 0 ]
       then
       echo -e "${CMD_NAME} - Convercao de arquivos ASCII\n"
       echo -e "Uso:\n    ${CMD_NAME} arq1 arq2 ... arqn > arq_saida"
       echo -e "               ou"
       echo -e "          <comando> \| ${CMD_NAME} > arq_saida\n"
       exit 255
    else
       filelist="-"
    fi
  else
   filelist="$*"
  fi
  for file in "$filelist"
  do
   cat "$file" | eval ${RUN_NAME}
  done
  exit 0


Veja a relação completa dos artigos de Jose Fernando Scheid Mascarenhas

 

 

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script