elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Bash: imprimir columnas alineadas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bash: imprimir columnas alineadas  (Leído 7,105 veces)
Ethicalsk

Desconectado Desconectado

Mensajes: 113



Ver Perfil
Bash: imprimir columnas alineadas
« en: 14 Noviembre 2015, 01:49 am »

Hola que tal gente? Lo que quería era imprimir 3 valores en una misma linea de forma que queden alineados con la linea de abajo. Por ejemplo, si escribo:

Código:
for valor in 1 2 3; do
      echo "$nombre[valor]          $apellido[valor]           %DN[valor]I"
done;

La salida es:

Juan          Lopez              38192434
Rodrigo              Dominguez                          34372374234
Leonardo               Perez                           20943428323

Y yo quiero:

Juan                  Lopez                          38192434
Rodrigo            Dominguez                  34372374234
Leonardo          Perez                           20943428323

Espero que puedan ayudarme! saludos.


En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #1 en: 14 Noviembre 2015, 04:38 am »

Código
  1. for valor in 1 2 3; do
  2.   echo -e "$nombre[valor]\t$apellido[valor]\t%DN[valor]I"
  3. done;

-e -> Hacer que echo interprete los carácteres especiales (los que empiezan con '\')
\t -> Tabulación

Saludos!


En línea

Skali

Desconectado Desconectado

Mensajes: 100



Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #2 en: 14 Noviembre 2015, 05:50 am »

genial! yo también hace mucho que quiero hacer eso y no sabía como
En línea

Ethicalsk

Desconectado Desconectado

Mensajes: 113



Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #3 en: 14 Noviembre 2015, 05:53 am »

Uhh hermano, sos un genio! Conocía el parámetro -e y la tabulación pero creí que solo se usaba para añadir un espaciamiento fijo digamos, y que igualmente quedaría todo desordenado, pero ahí probé y anda a la perfección!!! No te imaginas las soluciones raras e ineficientes que utilice para alinearlas, hice que mientras el tamaño de cada variable sea distinto a 25 ponele, ir agregando espacios en blanco, jajaja una locura!! Cargaba todo re lento...

Saludos brother!!!
En línea

Ethicalsk

Desconectado Desconectado

Mensajes: 113



Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #4 en: 14 Noviembre 2015, 06:08 am »

No, espera!!! Ahora que lo pruebo con el caso real que estoy tratando de hacer no me anda del todo bien, mira la salida:

« Última modificación: 14 Noviembre 2015, 06:16 am por Ethicalsk » En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #5 en: 14 Noviembre 2015, 15:05 pm »

Perdona, pensaba que con eso tan simple se solucionaría, supongo que funciona siempre que todas las celdas de la supuesta tabla tengan una longitud parecida, pero si hay algunas más largas que otras entonces deja de funcionar.

Puedes probar con el comando column para hacer lo que pides. Por ejemplo, sin el comando column esto es lo que te pasa a ti, que las columnas no están alineadas:



Y pasándole la salida de echo al comando column:



Saludos!
En línea

Ethicalsk

Desconectado Desconectado

Mensajes: 113



Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #6 en: 14 Noviembre 2015, 16:38 pm »

Genio de la vida! Jaja, como me vas a pedir perdón por ayudar!? Mil gracias!!! Cuando termine de hacer éste simple script lo publico en el foro para que lo tengan. Como podrás haber notado parsea el archivo donde se definen las system calls y muestra una salida más amigable, y también en hexa... Falta emprolijarlo y demas, pero cuando esté listo se los dejo! Abrazo!!!
En línea

xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #7 en: 14 Noviembre 2015, 23:10 pm »

De nada colega, me alegro de que ya funcione!

Es buena idea que cuando acabes el script lo subas aquí para que cualquiera que lo necesite pueda aprender de él.

Saludos!
En línea

yMk369

Desconectado Desconectado

Mensajes: 31


人は何かを成す為に生を受け、成し終えた時、死んで行く


Ver Perfil
Re: Bash: imprimir columnas alineadas
« Respuesta #8 en: 16 Noviembre 2015, 02:35 am »

Genial, la verdad to tampoco conocía "Column" aca un manpage http://linux.die.net/man/1/column

Ahora yo tengo una duda, yo utilizo  "notify-send". (por obvias razones)

notify-send -e  "Informativo de RAM" "RAM usada\tRAM libre\n$var1 MB\t$varl MB" | colum -t -s $'\t'

Pero no funciona, escapes siempre los he usado, (aun que solo en el cuerpo del mensaje)¿que me recomiendan?.

Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Bash Script] Imprimir información de PC
Scripting
edr89 0 1,956 Último mensaje 15 Mayo 2015, 05:25 am
por edr89
¿Se puede imprimir Dos columnas paralelas en C?
Programación C/C++
alejandrodiaz 1 6,558 Último mensaje 5 Agosto 2015, 02:04 am
por engel lex
[Resuelto] Imágenes en fila alineadas
Desarrollo Web
bgnumis 1 1,694 Último mensaje 13 Septiembre 2015, 19:01 pm
por bgnumis
Imprimir matrices alineadas a la derecha C
Programación C/C++
fernando1122 1 2,589 Último mensaje 22 Noviembre 2017, 06:14 am
por do-while
Mostrar frases alineadas extraídas de un archivo [Python]
Scripting
NOB2014 1 2,609 Último mensaje 28 Noviembre 2017, 04:34 am
por tincopasan
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines