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
trovare più grande directory in un filesystem GKnight Shell scripting e di programmazione 8 04-30-2008 09:58 PM
La più grande discarica del dispositivo è troppo piccola click007 AIX 4 10-26-2007 06:08 AM
trovare più file mohan705 Shell scripting e di programmazione 15 07-04-2007 03:34 AM
trovare il 5o più file in una directory igidttam Filesystem, memoria e dischi 8 05-16-2007 02:20 PM
file di maggiori dimensioni in pwd rameshparsa Shell scripting e di programmazione 4 11-22-2005 12:25 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 03-15-2008
jkl_jkl jkl_jkl is offline
Utente Registrato
  
 

Join Date: Aug 2007
Interventi: 46
più grande campo, awk, aiuto

Hi All,

Il mio file è simile a questo:


Codice:
$ cat max.txt
abcd:1982:a
efghij:1980:e
klmn:1923:k
opqrst:1982:o

Devo trovare il più grande e il primo campo corrispondente linea. vale a dire

Output richiesti:


Codice:
efghij efghij:1980:e
opqrst opqrst:1982:o

HTH,
jkl_jkl
  #2 (permalink)  
Old 03-15-2008
yunccll yunccll is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 23
provare questo codice:
Codice:
#!/bin/bash

#constant
INFILE="max.txt"

#core script
awk ' BEGIN { OFS=FS=":"; cur=max=0; seen=""}
        {
           cur = length($1)
           if(cur > max ){
              seen = $1 " " $0
           }
           else if(cur == max){
              seen = seen "\n"  $1 " " $0
           }
        }
        END { print seen }'  $INFILE
#exit normally
exit 0

. Aaron
  #3 (permalink)  
Old 03-15-2008
jkl_jkl jkl_jkl is offline
Utente Registrato
  
 

Join Date: Aug 2007
Interventi: 46
Aaron,

E 'solo stampe


Codice:
opqrst opqrst:1982:o

E non


Codice:
efghij efghij:1980:e
opqrst opqrst:1982:o

vale a dire se ci sono 2 campi da più tempo, la sua stampa l'ultimo.
  #4 (permalink)  
Old 03-15-2008
fpmurphy's Avatar
fpmurphy fpmurphy is offline Forum Staff  
Moderatore
  
 

Iscriviti Data: dicembre 2003
Luogo: Florida
Interventi: 1.934
Basta aggiungere "max \u003d corr" e entrambe le linee sono stampate come si desidera.


Codice:
awk ' BEGIN { OFS=FS=":"; cur=max=0; seen=""}
        {
           cur = length($1)
           if (cur > max ) {
              seen = $1 " " $0
              max = cur
           } else if (cur == max) {
              seen = seen "\n"  $1 " " $0
           }
        }
        END { print seen }'  $INFILE

  #5 (permalink)  
Old 03-15-2008
Klashxx's Avatar
Klashxx Klashxx is offline Forum Advisor  
HP-UX/Linux/Oracle
  
 

Iscriviti Data: febbraio 2006
Localizzazione: Almería, Spagna
Interventi: 393
Un altro sol:

Codice:
awk '{l=length($1);if(l>=max){a[$1" "$0]=l;max=l}}END{for(i in a)if (a[i]==max)print i}' FS=':' file

  #6 (permalink)  
Old 03-16-2008
yunccll yunccll is offline
Utente Registrato
  
 

Iscriviti Data: marzo 2008
Interventi: 23
Citazione:
Originalmente inviato da jkl_jkl View Post
Aaron,

E 'solo stampe


Codice:
opqrst opqrst:1982:o

E non


Codice:
efghij efghij:1980:e
opqrst opqrst:1982:o

vale a dire se ci sono 2 campi da più tempo, la sua stampa l'ultimo.
oh, scusami, ho dimenticato il "max \u003d cur", quando ho il mio codice di ingresso in risposta!

. Aaron
  #7 (permalink)  
Old 11-29-2008
bashisthebest bashisthebest is offline
Utente Registrato
  
 

Iscriviti Data: novembre 2008
Interventi: 1
Come si trova il campo più basso e la corrispondente linea?

Ciao mi chiedevo come si farebbe il significato opposto trovare il campo più basso e la corrispondente linea?

grazie in anticipo.
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 è 05:34 PM.


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