The UNIX and Linux Forums  

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Comment trier un fichier, puis imprimer des lignes une fois Shira De programmation et de script Shell 6 01-27-2009 01:22 PM
Trier, un groupe de lignes patrykxes De programmation et de script Shell 6 01-06-2009 02:28 PM
awk aide nécessaire à la production du groupe et imprimer une partie du groupe en ligne et ligne originale rajan_san De programmation et de script Shell 5 10-27-2008 09:16 AM
Trier cmd pour obtenir GROUP BY? RacerX UNIX pour les nuls Questions et réponses 6 10-16-2008 08:40 AM
PHP & MySQL: trier et imprimer desending perleo De programmation et de script Shell 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 Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 02-11-2009
m4rco - m4rco- is offline
Registered User
  
 

Date d'inscription: février 2009
Messages: 7
awk - sort, puis imprimez-le à haute valeur pour chaque groupe

Salut @ tous

J'essaie d'arriver à ce problème,

J'ai un 2-colonne fichier composé comme suit:

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

et je voudrais ce genre de sortie:

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

J'essaie d'utiliser cette méthodologie:


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


mais je ne suis pas sûr que ce soit la bonne façon ....

Merci à tous d'avance!

m4rco -
  #2 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2005
Lieu: Boston, MA
Posts: 5131

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

  #3 (permalink)  
Old 02-11-2009
gio001 gio001 is offline
Registered User
  
 

Join Date: Mar 2007
Posts: 70
How about this .....

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

L'espoir c'est ce que vous avez besoin.
G.
  #4 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2005
Lieu: Boston, MA
Posts: 5131
Citation:
Posté par gio001 View Post
How about this .....

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

L'espoir c'est ce que vous avez besoin.
G.
beaucoup trop d'inutiles "tuyaux" pour mon goût ....
  #5 (permalink)  
Old 02-11-2009
gio001 gio001 is offline
Registered User
  
 

Join Date: Mar 2007
Posts: 70
Bonjour,
Je suis stupéfait de la manière dont le code est bon ... pouvez-vous expliquer un peu ce qui est dit dans la logique de la ligne:

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

Merci.

Dernière édition par gio001; au 02.11.2009 04:39 PM..
  #6 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2005
Lieu: Boston, MA
Posts: 5131

Code:
max[$1] = !($1 in max) ? $2 : ($2 > max[$1]) ? $2 : max[$1]

max [$ 1] - «max» est un tableau indexé par la valeur du premier champ
! ($ 1 au maximum)? $ 2 - si '$ 1' n'est pas déjà dans la gamme 'max', le retour de la valeur du deuxième champ
: - Autrement
($ 2> max [$ 1])? $ 2 : max [$ 1]
si la valeur du deuxième champ est plus grande que ce qui est déjà en array 'max' (index par '$ 1'), retourner la valeur du deuxième champ. Si non, le retour de la valeur actuelle du tableau 'max [$ 1].

'max [$ 1] \u003d' - est retourné quel que soit, de la stocker array 'max' index par le premier champ.

Lil 'peu verbeuse, mais j'espère que vous avez le sens de celui-ci.

Dernière édition par vgersh99; au 02.12.2009 07:31 AM..
  #7 (permalink)  
Old 02-11-2009
m4rco - m4rco- is offline
Registered User
  
 

Date d'inscription: février 2009
Messages: 7
Thumbs up

wow vgers ...
solution incroyable et étonnante explication.

thank u so much!


Closed Thread

Bookmarks

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 05:12 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0