Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
del sitio de Google



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 02-27-2008
Usuario Registrado
 

Fecha: Sep 2006
Ubicación: SG
Puestos: 353
2D array para mostrar caracteres

Hi All,

Tengo una serie de número que indica las coordenadas
0104 indica que X-coord \u003d 01 e Y-coord \u003d 04 caracteres y quiero formar de acuerdo a las coordenadas dadas.
Cualquier experto puede darme un ejemplo de código 2D gama utilizando csh o awk o perl de tal manera que el código puede mostrar los caracteres a continuación?

EG:
De entrada:
0101 A
0102 B
0103 C
0104 D
0201 E
F 0202
0203 G
0204 H
0301 I
0302 J
0303 K
0304 L


Código:
04  D   H   L 
03  C   G   K
02  B   F   J
01  A   E   I  
   01  02  03


Última edición por Raynon; al 02-27-2008 07:26 AM..
Enlaces patrocinados
  #2 (Enlace permanente)  
Old 02-27-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
 

Fecha: febrero 2006
Ubicación: Almería, España
Puestos: 397
De esta manera:

Código:
awk '{
X[$2]=substr($1,1,2)
Y[$2]=substr($1,3)
}
END {
for ( y in Y)
   for ( x in X )
      if ( x == y  )
        {
        dx=sprintf("%d",X[x])
        dy=sprintf("%d",Y[y])
        if ( dx >= max_x )
           max_x=dx
        if ( dy >= max_y )
           max_y=dy
        f[dx,dy]=x 
        }
for (i=max_y;i>=1;i--)
    {
    printf("%2d",i)
    for (j=1;j<=max_x;j++)
       printf(" %2s",f[j,i])
    printf("\n")
    }
printf("   ")
for (j=1;j<=max_x;j++)
   printf("%2d ",j)
print
} ' file
 4  D  H  L
 3  C  G  K
 2  B  F  J
 1  A  E  I
    1  2  3

  #3 (Enlace permanente)  
Old 02-27-2008
Usuario Registrado
 

Fecha: Sep 2006
Ubicación: SG
Puestos: 353
Hola Klashxx,

Su código es realmente genial. Thks, funciona hasta una matriz de 9x9.
Sin embargo, he intentado con el código x-10 y por encima de las coordenadas y no funciona. ¿Pueden ayudarme?

EG:
De entrada:
0101 A
0102 B
0103 C
0104 D
0201 E
F 0202
0203 G
0204 H
0301 I
0302 J
0303 K
0304 L
1001 M
1002 N
  #4 (Enlace permanente)  
Old 02-27-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
 

Fecha: febrero 2006
Ubicación: Almería, España
Puestos: 397
Bueno, se trata de un problema, por lo que:

Código:
> cat file
0101 A
0102 B
0103 C
0104 D
0201 E
0202 F
0203 G
0204 H
0301 I
0302 J
0303 K
0302 L
0903 U
1001 M
1002 N
1104 
1504 F
2005 N


Código:
>awk '{
X[$2]=substr($1,1,2)
Y[$2]=substr($1,3)
}
END {
for ( y in Y)
   for ( x in X )
      if ( x == y  )
        {
        dx=X[x]+0
        dy=Y[y]+0
        if ( dx >= max_x )
           max_x=dx
        if ( dy >= max_y )
           max_y=dy
        f[dx,dy]=x 
        }
for (i=max_y;i>=1;i--)
    {
    printf("%.2d",i)
    for (j=1;j<=max_x;j++)
       printf(" %2s",f[j,i])
    printf("\n")
    }
printf("   ")
for (j=1;j<=max_x;j++)
   printf("%.2d ",j)
print
} ' file
05                                                           N
04  D  H                                     F               
03  C  G  K                 U                                 
02  B     L                                                   
01  A  E  I                    M                              
   01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20

Adiós

Última edición por Klashxx; al 02-27-2008 10:25 AM.. Motivo: error solucionado
  #5 (Enlace permanente)  
Old 02-27-2008
Usuario Registrado
 

Fecha: Sep 2006
Ubicación: SG
Puestos: 353
Hola Klashxx,

Extraño, traté de utilizar el código modificado año, pero algunos caracteres extraños aparecen al final de la producción en color azul. ¿Puede dar algunos consejos sobre que


Código:
$ cat input1
0101 A
0102 B
0103 C
0104 D
0201 E
0202 F
0203 G
0204 H
0301 I
0302 J
0303 K
0302 L
0801 Z
0903 U
1001 M
1002 N

$ awk -f 2d_array input1
04  D  H
03  C  G  K                 U
02  B  F  L                    N
01  A  E  I              Z     M
   01 02 03 04 05 06 07 08 09 10 1002 N

  #6 (Enlace permanente)  
Old 02-27-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
 

Fecha: febrero 2006
Ubicación: Almería, España
Puestos: 397
Hola, cambiar el pasado imprimir para printf ( "\ n")
  #7 (Enlace permanente)  
Old 02-27-2008
Usuario Registrado
 

Fecha: Sep 2006
Ubicación: SG
Puestos: 353
Hola Klashxx,

Thks millón !!!!. ¡Funciona!!
Thats real fresco!.
Pero soy un principiante en awk, ¿puede explicar su código de tal manera que puedo comprender mejor. Especialmente la parte bucle, lo que parece confuso para mí.
Enlaces patrocinados
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Apagado


Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Array con caracteres especiales donaldfung UNIX for Dummies Preguntas y Respuestas 1 06-08-2008 01:18 PM
Cómo declarar una matriz de tener más de 10.000 caracteres rosado Programación de scripts de shell y 0 01-15-2008 10:38 PM
crear arreglo que contiene los caracteres de sring then echo matriz. rorey_breaker Programación de scripts de shell y 5 09-28-2007 09:42 AM
Mostrar caracteres especiales BCarlson Programación de scripts de shell y 2 10-06-2006 10:59 AM
Personajes como pantalla EBCDIC LouPelagalli AIX 1 08-09-2005 03:07 PM



Todas las horas son GMT -4. La hora es 07:44 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Content Copyright © 1993-2010. Toda la Administración de Derechos de Reserved.Ad por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0