The UNIX and Linux Forums  


Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



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í.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Cómo ordenar un archivo y luego imprimir el mismo sentido, una vez Shira Programación de scripts de shell y 6 01-27-2009 01:22 PM
Ordenar, agrupar las filas patrykxes Programación de scripts de shell y 6 01-06-2009 02:28 PM
awk ayuda necesaria para la producción y el grupo de imprimir una parte del grupo de línea y línea original rajan_san Programación de scripts de shell y 5 10-27-2008 09:16 AM
Ordenar cmd a GROUP BY? RacerX UNIX for Dummies Preguntas y Respuestas 6 10-16-2008 08:40 AM
PHP y MySQL: desending y tipo de impresión perleo Programación de scripts de shell y 1 09-02-2003 12:50 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 02-11-2009
m4rco - m4rco- is offline
Usuario Registrado
  
 

Fecha: febrero 2009
Publicaciones: 7
awk - especie, entonces la impresión de alto valor para cada grupo

Hola a todos @

Estoy tratando de alcanzar a este problema,

Tengo una columna 2-archivo compuesto de la siguiente manera:

192.168.1.2 2
192.168.1.3 12
192.168.1.2 4
192.168.1.4 3
cpc1-swan1-2-3-cust123.swan.cable.ntl.com 4
192.168.1.3 5
192.168.1.2 10
192.168.1.4 8
cpc1-swan1-2-3-cust123.swan.cable.ntl.com 8

y quiero este tipo de salida:

192.168.1.2 10
192.168.1.3 12
192.168.1.4 8
cpc1-swan1-2-3-cust123.swan.cable.ntl.com 8

Estoy tratando de utilizar esta metodología:


Código:
awk  '{  a[$NF]=$2; if ( a[$NF] >= max[$NF] ) max[$NF]=a[$NF] } END { for ( item in a )  print item,max[item] }'


pero no estoy seguro de que este es el camino correcto ....

Gracias a todos por adelantado!

m4rco -
  #2 (Enlace permanente)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131

Código:
nawk '{
  max[$1] = !($1 in max) ? $2 : ($2 > max[$1]) ? $2 : max[$1]
}
END {
  for (i in max)
    print i, max[i]
}' myFile

  #3 (Enlace permanente)  
Old 02-11-2009
gio001 gio001 is offline
Usuario Registrado
  
 

Fecha: marzo 2007
Puestos: 70
¿Qué te parece esto .....

awk '(print $ 2 "" $ 1)' file_in_input | sort-k 2-k 1RN | uniq-f 1 | awk '(print $ 2 "" $ 1)'> output_file

Espero que esto es lo que necesitaba.
G.
  #4 (Enlace permanente)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131
Cita:
Publicado originalmente por gio001 View Post
¿Qué te parece esto .....

awk '(print $ 2 "" $ 1)' file_in_input | sort-k 2-k 1RN | uniq-f 1 | awk '(print $ 2 "" $ 1)'> output_file

Espero que esto es lo que necesitaba.
G.
demasiados innecesarios "tubos" para mi gusto ....
  #5 (Enlace permanente)  
Old 02-11-2009
gio001 gio001 is offline
Usuario Registrado
  
 

Fecha: marzo 2007
Puestos: 70
Hola,
Estoy asombrado de cómo facilitar el código ... puedes explicar un poco en palabras lo que es la lógica de la línea:

max [$ 1] \u003d! ($ 1 en max)? $ 2: ($ 2> max [$ 1])? $ 2: max [$ 1]

Gracias.

Última edición por gio001; al 02-11-2009 04:39 PM..
  #6 (Enlace permanente)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.131

Código:
max[$1] = !($1 in max) ? $2 : ($2 > max[$1]) ? $2 : max[$1]

max [$ 1] - 'Max' es una matriz indexada por el valor del primer campo
! ($ 1 en max)? $ 2 - en caso de '$ 1' no está ya en serie 'Max', devuelva el valor del segundo campo
: - De otro modo
($ 2> max [$ 1])? $ 2 : max [$ 1]
si el valor del segundo campo es superior a lo que ya se encuentra en la serie "Max" (índice de '$ 1'), devolver el valor del segundo campo. Si no, devuelva el valor actual de la gama 'max [$ 1] ".

'max [$ 1] \u003d' - lo que se volvió, guárdelo serie 'Max' índice por el primer campo.

Lil 'verboso poco, pero espero te la esencia de la misma.

Última edición por vgersh99; al 02-12-2009 07:31 AM..
  #7 (Enlace permanente)  
Old 02-11-2009
m4rco - m4rco- is offline
Usuario Registrado
  
 

Fecha: febrero 2009
Publicaciones: 7
Thumbs up

wow ... vgers
solución sorprendente, increíble y explicación.

u gracias tanto!


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 Encendido




Todas las horas son GMT -4. La hora es 01:02 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 Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0