Autor Tema: [BASH] pasando fichero texto creado en windows a formato unix  (Leído 2386 veces)

0 Usuarios y 1 Visitante están viendo este tema.

alist3r

  • Visitante
funcion en bash que hace lo que dice el enunciado. nivel basico.
uso:
file_trans_dos2unix ficherodos.txt nuevoficherounix.txt
si no existe ficherodos.txt, la función devuelve un error 2
si ya existe nuevoficherounix.txt, la función devuelve un error 3.

este snippet debera funcionar incluso en las distros mas simples; la utilidad GNU "tr" (TRanslate) es muy basica.

tr tiene la habilidad, entre otras, de cargarse todas las apariciones de un determinado carácter o conjunto de caracteres dentro de un flujo de texto. En esta ocasion se va a cargar todas las apariciones del molesto "carriage return" existente al final de linea de los archivos de texto creados en SO's de la familia DOS.

Código: [Seleccionar]
function file_trans_dos2unix {
if [ -z "$2" ] # si no se pasan 2 parametros...
  return 1 # error
fi
if [ ! -f "$1" ] # si no existe el fichero origen...
  return 2 # la funcion devolvera otro error, llamemosle 2
fi
if [ -e "$2" ] # si hay un fichero o directorio llamado como el fichero destino...
  return 3 # la funcion devolvera otro error, llamemosle 3
fi


# las lineas en un archivo DOS/WIN acaban en Carrage Return + Line Feed.
CR='\015'  # Este es Carriage Return
# borrar todos los CR (parametro -d = delete) y reescribir el flujo de texto en la ruta indicada por $2.
tr -d $CR < "$1" > "$2"
}

@warcry
espero el snippet que te sirva para disminuir la probabilidad de que el usuario te escacharre el airlin usando diccionarios creados en Windows Hasefroch

salu2


« Última modificación: 05-02-2013, 01:47 (Martes) por alist3r »