The UNIX and Linux Forums  


Go Back   UNIX e Linux Forum > Inizio Forum > Shell scripting e di programmazione
.
google unix.com



Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui.

Più di UNIX e Linux Forum Argomenti potreste trovare utili
Filo Thread Starter Forum Risposte Ultimo Post
Come ordinare un file di stampa e poi una volta che le linee simili shira Shell scripting e di programmazione 6 01-27-2009 01:22 PM
Ordina, gruppo di righe patrykxes Shell scripting e di programmazione 6 01-06-2009 02:28 PM
awk aiuto richiesto al gruppo di output di stampa e una parte del gruppo di linea e originale linea rajan_san Shell scripting e di programmazione 5 10-27-2008 09:16 AM
Ordina cmd per ottenere GROUP BY? RacerX UNIX for Dummies Domande & Risposte 6 10-16-2008 08:40 AM
PHP e MySQL: desending ordinare e stampare perleo Shell scripting e di programmazione 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 Cerca in questo Thread Rate Thread Modalità di visualizzazione
  #1 (permalink)  
Old 02-11-2009
m4rco - m4rco- is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2009
Interventi: 7
awk - sorta, quindi stampare il valore elevato per ciascun gruppo

Ciao @ tutti

Sto cercando di raggiungere a questo problema,

Ho un 2-colonna composta file come i seguenti:

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

e io questo tipo di produzione:

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

Sto cercando di utilizzare questo metodo:


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


ma non sono sicuro che questo sia il modo giusto ....

Grazie a tutti in anticipo!

m4rco -
  #2 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.130

Codice:
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
Utente Registrato
  
 

Iscriviti Data: marzo 2007
Interventi: 70
Cosa ne pensate di questo .....

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

La speranza è ciò che è necessario.
G.
  #4 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.130
Citazione:
Originalmente inviato da gio001 View Post
Cosa ne pensate di questo .....

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

La speranza è ciò che è necessario.
G.
troppi inutili 'tubi' per mio gusto ....
  #5 (permalink)  
Old 02-11-2009
gio001 gio001 is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2007
Interventi: 70
Ciao,
Sono stupito di come il codice è corretto ... si può spiegare un po 'in parole ciò che è la logica della linea:

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

Grazie.

Ultimo a cura di gio001; al 02/11/2009 04:39 PM..
  #6 (permalink)  
Old 02-11-2009
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderatore
  
 

Iscriviti Data: febbraio 2005
Località: Boston, MA
Messaggi: 5.130

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

max [$ 1] - 'Max' è un array indicizzato da il valore del primo campo
! ($ 1 a max)? $ 2 - se '$ 1' non è già in array 'Max', il valore di ritorno del secondo campo
: - Altrimenti
($ 2> max [$ 1])? $ 2 : max [$ 1]
se il valore del secondo campo è superiore a ciò che è già in array 'Max' (indice da '$ 1'), restituire il valore del secondo campo. In caso contrario, restituire il valore corrente di array 'max [$ 1]'.

'max [$ 1] \u003d' - ciò che viene restituito, memorizzarlo array 'Max' indice per il primo campo.

Lil 'po' verboso, ma spero di ottenere il contenuto di esso.

Ultimo a cura di vgersh99; al 02/12/2009 07:31 AM..
  #7 (permalink)  
Old 02-11-2009
m4rco - m4rco- is offline
Utente Registrato
  
 

Iscriviti Data: febbraio 2009
Interventi: 7
Thumbs up

wow ... vgers
soluzione sorprendente, stupefacente e spiegazione.

thank u so much!


Closed Thread

Segnalibri

Thread Tools Cerca in questo Thread
Cerca in questo Thread:

Ricerca Avanzata
Modalità di visualizzazione Vota questo thread
Vota questo thread:

Distacco regolamento
Tu non può post nuovo thread
Tu non può inviare una risposta
Tu non può postare allegati
Tu non può modificare i tuoi post

BB codice è Su
Smilies sono Su
[IMG] codice Su
Codice HTML è Chiuso
Trackbacks sono Su
Pingbacks sono Su
Refbacks sono Su




Tutti gli orari sono GMT -4. La data di oggi è 09:20 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traduzioni Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX e Linux Forum Content Copyright © 1993-2009. Tutti i diritti Reserved.Ad di gestione da RedTyger

Contenuti pertinenti URL da vBSEO 3.2.0