tput cup con salida de archivos

Imagen de latinpower
0 puntos

Hola,

tengo un archivo de textos así

saioan:ndioasn:nd2121:213:12312
fnaiso:sfdnsaio:13:12312:312
asfsaf:asdfa:132:156:13
12313:123:123:123:123
aaab:aaab:aab:aba:ab
bla bal:balba:14312:3123:2312 21

Separado por :, y lo que quiero es cargar cada columna o field por separado, para asi poder posicionarlo en pantalla. Es una lista de usuarios con sus datos, y yo quiero que por ejemplo, en el eje x10 salgan los nombres, en el eje x = 20 salgan los apellidos, en el eje x= 30 los telefonos etc. Manteniendo un estilo de tabla.

Alguien sabe como hacerlo?

Por ahora tengo esto

tput cup 5 22;
cut -d: -f1 gatitas;
read X;

Pero el problema es que solo me posiciona el primer renglón, no las demas, los cuales salen pegados al borde de la consola, es decir, en x = 1.

Imagen de osculodejudas
+1
0
-1

Si el problema es posicionar puedes probar como en alguno de estos dos ejemplos:
#!/bin/bash
#
# "jazz_it_up" - an improved text-mode menu

tput civis # Turn off the cursor

while [ 1 ]
do
echo -e '\E[44;38m' # Set colors: bg=blue, fg=white
clear # Redraw the screen with the above color set
echo -e '\E[41;38m' # bg=red

echo -ne '\E[45;38m' # bg=magenta
tput cup 8 25 ; echo -n " M A I N M E N U "
echo -e '\E[41;38m' # bg=red

tput cup 10 25 ; echo -n " 1. Business auto policies "
tput cup 11 25 ; echo -n " 2. Private auto policies "
tput cup 12 25 ; echo -n " 3. Claims "
tput cup 13 25 ; echo -n " 4. Accounting "
tput cup 14 25 ; echo -n " 5. Quit "

echo -ne '\E[44;38m' # bg=blue
tput cup 16 28 ; echo -n " Enter your choice: "
tput cup 16 48

read choice
tput cup 18 30

case "$choice" in
1|B|b) bizpol ;;
2|P|p) perspol ;;
3|C|c) claims ;;
4|A|a) acct ;;
5|Q|q) tput sgr0; clear; exit ;;
*) tput cup 18 26; echo "\"$choice\" is not a valid option."; sleep 2 ;;
esac
done
-------------
#!/usr/bin/bash
# menu
# atrapar control-c y d
trap "" 2 3
##############################
# Funciones #
##############################
uno()
{
tput clear
echo -e "\e[1;36m"
/usr/bin/showrev
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
dos()
{
tput clear
echo -e "\e[1;36m"
prtconf -v|grep Memory
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
tres ()
{
tput clear
echo -e "\e[1;36m"
psrinfo -pv
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
cuatro ()
{
tput clear
echo -e "\e[1;36m"
/usr/local/bin/top -s 1
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
cinco ()
{
tput clear
echo -e "\e[1;36m"
prtdiag -v
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
seis()
{
tput clear
echo -e "\e[1;36m"
scstat
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
siete ()
{
tput clear
echo -e "\e[1;36m"
scconf -p
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}
ocho ()
{
tput clear
echo -e "\e[1;36m"
netstat -nr
echo -e "\e[1;41m"
echo `tput blink` "Pulsa intro para continuar"
read
tput sgr0
/kk/menu.sh
}

###########
###########

while true
do
clear
echo -e "\e[5;20H" `tput bold` "Menu"
echo -e "\e[1;33m"
echo -e "\e[7;16H" "0 Salir"
echo -e "\e[9;16H" "1 Informacion de la maquina"
echo -e "\e[10;16H" "2 Memoria del sistema"
echo -e "\e[11;16H" "3 Informacion de los procesadores"
echo -e "\e[12;16H" "4 Informacion de los procesos"
echo -e "\e[14;16H" "C Infoformacion sobre la configuracion del cluster"
echo -e "\e[15;16H" "D Diagnostico de la maquina"
echo -e "\e[16;16H" "E Estado del cluster"
echo -e "\e[17;16H" "T tabla de rutas"
echo -e "\e[1;31m"
echo -e "\e[26;16H" "opcion \c";tput sgr0; read opc

case $opc in
# asi salimos con 0 o intro
0|"") clear; break;;
1) uno; break;;
2) dos; break;;
3) tres; break;;
4) cuatro; break;;
d|D) cinco; break;;
e|E) seis; break;;
c|C) siete; break;;
t|T) ocho; break;;
*) continue;;
esac
done
tput sgr0
trap 2 3
----------------------
Si lo que quiere es eparar los campos lo puedes hacer con awk
cat /etc/passwd|awk -F: '{print $1}'

+1
0
-1
Imagen de latinpower
+1
0
-1

No entiendo como funciona el AWK, según lo que leí tengo que especificar el delimitador y probe con algo asi

cat gatias | awk begin { FS=":" } { print f "$1"}

pero no me muestra nada. Alguna idea?

+1
0
-1
Imagen de osculodejudas
+1
0
-1

con el cat muesto el fichero /etc/passwd, que si lo visualizas, te das cuenta que esta dividido por una serie de campos, y el limitador es ":". y con "'{print $1}'" le decimos que nos visualice el primer campo

+1
0
-1