Mostrando entradas con la etiqueta Unix. Mostrar todas las entradas
Mostrando entradas con la etiqueta Unix. Mostrar todas las entradas

lunes, 19 de diciembre de 2011

Dividir archivos en Unix

Resulta que hace unos días necesitaba consultar el log del servidor de producción, y me encontré que pesaba nada menos que ¡400 megas!. Intentar abrir algo así con mi portátil era misión imposible, porque el pobre ya no está para esos trotes, así que necesitaba una solución alternativa.

Una buena opción para estos casos son los programas que dividen archivos. En Windows hay varias alternativas como el hacha o el hjsplit, pero, ¿qué pasa si estamos en sistemas Unix? Pues después de un buen rato buscando, resulta que averigüé que no necesitamos ninguna herramienta, sino que podemos utilizar directamente el comando split. Su sintaxis es:

split [parametros] [archivo_origen] [archivo_salida]

Si no especificamos parámetros, el archivo se divide en nuevos archivos de mil líneas, y a cada uno se le nombra como archivo_salida (o x si no se especifica ese parámetro), con el prefijo aa, ab, ac, etc. También podemos pasarle un guión como archivo_origen, y el comando dividirá lo que reciba por la entrada estándar.

Los parámetros nos permiten adecuar el funcionamiento del comando a nuestras necesidades. El más interesante para mis necesidades era el que modificaba el tamaño de los ficheros obtenidos:

-b valor indica el tamaño de los ficheros en número de bytes (también se puede usar -bytes=valor)

Y tampoco me extiendo más, porque su uso es simple, y su documentación es perfectamente clara. Lo importante es saber que está ahí si lo necesitamos.

miércoles, 9 de noviembre de 2011

Juegos de caracteres en Unix

Hace días estuve trabajando en un proceso de migración de datos. El proceso se ejecutaba en un sistema Unix, y recibía como entrada un simple fichero de texto plano. Pero, ¿cómo no?, ese fichero había sido generado bajo plataforma Windows.

El tema es que aunque el fichero se podía ver perfectamente con cualquier herramienta Windows (notepad++, ultraedit, y hasta el bloc de notas), incluyendo sus acentos y eñes, en el momento en que lo subía al equipo con Unix todo se descuajaringaba. Incluso si volvía a descargar el fichero (tanto la carga como la descarga utilizando Filezilla), pasaba a no verse tampoco en Windows.

Supongo que algún día terminaré de enterarme de los misterios que encierra la codificación de ficheros. Pero de momento me consuelo con saber que tengo una solución para conseguir que mi fiero no sufra mutaciones horrorosas.

Existe una función llamada iconv que permite cambiar la codificación de ficheros en Unix. En mi caso conseguí lo que quería con un simple

iconv --from-code=ISO-8859-1 --to-code=UTF-8 entrada.txt > salida.txt

Incluso podríamos reducirlo más

iconv -f ISO-8859-1 -t UTF-8 entrada.txt > salida.txt

También podemos utilizar la opción -l (o --list) para ver qué codificaciones hay disponibles en nuestro sistema.