Shell script Formateo de Datos

Temas sobre programación ( php, c, sql, html, perl, python, ruby, java, bash, etc ) y recursos ( herramientas, frameworks, hosting, cms, etc )

Moderadores: akodo, maiku

Responder
asado_argento
Forista Nuevo
Forista Nuevo
Mensajes: 1
Registrado: Jue Oct 04, 2018 3:08 pm

Shell script Formateo de Datos

Mensaje por asado_argento » Jue Oct 04, 2018 3:18 pm

Hola Gente, como estan? tengo un txt que tiene los siguinetes datos y necesito que quede ordenado por columna.
Actualmente esta asi:
REEBO Campaign Management Server 30OCT2018
REEBO Data Integration Server 30OCT2018
REEBO Enterprise BI Server 30OCT2018
REEBO Enterprise Guide 30OCT2018
REEBO Enterprise Miner Server 30OCT2018
REEBO Forecast Server 30OCT2018
REEBO Forecast Server Client 30OCT2018
REEBO In-Memory Statistics 30OCT2018
REEBO LASR Analytic Server Distributed 30OCT2018
REEBO Metadata Server 30OCT2018
REEBO Model Manager Server 30OCT2018
REEBO OLAP Server 30OCT2018
REEBO Office Analytics 30OCT2018
REEBO Solution LASR Analytic Server 30OCT2018
REEBO Text Analytics for Spanish 30OCT2018
REEBO Visual Analytics 30OCT2018
REEBO Visual Analytics LASR Server Distributed 30OCT2018
REEBO Visual Analytics LASR Server Non-Distributed 30OCT2018
REEBO Visual Statistics 30OCT2018

Y necesito que este formateado de la siguiente forma

Código: Seleccionar todo


DESCRIPCION													FECHA
----------------------------------------------------------------------
REEBO Campaign Management Server  							30OCT2018
REEBO Data Integration Server     							30OCT2018
REEBO Enterprise BI Server        							30OCT2018
REEBO Enterprise Guide    									30OCT2018
REEBO Enterprise Miner Server     							30OCT2018
REEBO Forecast Server     									30OCT2018
REEBO Forecast Server Client      							30OCT2018
REEBO In-Memory Statistics        							30OCT2018
REEBO LASR Analytic Server Distributed    					30OCT2018
REEBO Metadata Server     									30OCT2018
REEBO Model Manager Server        							30OCT2018
REEBO OLAP Server 											30OCT2018
REEBO Office Analytics    									30OCT2018
REEBO Solution LASR Analytic Server       					30OCT2018
REEBO Text Analytics for Spanish  							30OCT2018
REEBO Visual Analytics    									30OCT2018
REEBO Visual Analytics LASR Server Distributed    			30OCT2018
REEBO Visual Analytics LASR Server Non-Distributed        	30OCT2018
REEBO Visual Statistics   									30OCT2018
Alguien me podría ayudar ?
Con awk -F puedo indicar el delimitador... pero 30OCT2018 no lo puedo poner como delimitador, porque ese valor puede cambiar, pero contendra la misma candidad de caracteres. 2 numerales, 3 letras de texto, y 4 numerales.

Espero me pueda ayudar.

Gracias.
Avatar de Usuario
doc
Forista Ancestral
Forista Ancestral
Mensajes: 3244
Registrado: Mié Ago 11, 2010 10:32 am
Ubicación: Oviedo-es_ES
Contactar:

Re: Shell script Formateo de Datos

Mensaje por doc » Jue Oct 04, 2018 3:46 pm

seguro que los foreros con conocimiento de programación te lo podrán resolver, pero si quieres hacerlo 'sin necesidad de conocer programación' es muy sencillo, basta que copies/abras ese texto en libreoffice-Writter, introduzcas un tabulador antes de cada fecha, selecciones todo y con la opción (del Menú) 'Tabla-Convertir texto en tabla' lo tendrás como quieres tenerlo.
Avatar de Usuario
neurus
Forista Legendario
Forista Legendario
Mensajes: 1801
Registrado: Dom Oct 10, 2004 7:00 am

Re: Shell script Formateo de Datos

Mensaje por neurus » Mar Oct 09, 2018 11:19 pm

Complicadito, el tema.
En principio, eso se haría con awk.
Y después habría que darle algo de formato con printf (si la salida tiene que ser exactamente como en tu ejemplo).

Primero, lo que creo que no te está saliendo, es imprimir con awk toda la línea hasta el NF (no incluido); y luego el NF. Y entre ambos, se podría insertar un carácter o una tabulación. En este ejemplo inserto una tabulación (insertar un carácter "raro", serviría para usarlo como separador de campo en otro script).

Supongamos que tu archivo se llama archivo.

Código: Seleccionar todo

IFS=$'\x0A'$'\x0D'  &&
awk '{for (i=1; i<NF; i++) printf $i " "  } {printf "\t"}{printf $NF } {printf "\n"} ' archivo

Eso, por supuesto, puede redirigirse a otro archivo para seguir formateándolo.

En lugar de printf "\t" (tabulador), podría insertarse, por ejemplo, un "#" y luego usarlo como separador de campos.

Para la cuestión del formato hace falta algo más de trabajo, que no voy a hacer acá. Te dejo link para que pruebes:

https://linuxconfig.org/bash-printf-syn ... h-examples
Responder
  • Similar Topics
    Respuestas
    Vistas
    Último mensaje