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
bisogno di aiuto nel parsing di un file CSV e generare un nuovo file di output VKR Shell scripting e di programmazione 15 08-01-2008 08:33 AM
Trovare & Moving vecchia file da Parsing / Ordinamento Data Info in File Names nikosey Shell scripting e di programmazione 6 07-30-2008 10:46 PM
Parsing di un file aol12123 Shell scripting e di programmazione 11 03-25-2008 02:06 AM
Parsing di un file CSV chiru_h Shell scripting e di programmazione 6 02-12-2008 09:33 AM
Parsing di un file di log tbirenzweig Shell scripting e di programmazione 4 06-20-2006 08:02 AM

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 10-13-2008
brawnr brawnr is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2008
Interventi: 2
File Parsing Aiuto

Ciao,

Ho un file che contiene i gruppi di settori. Questi gruppi sono separati da una riga vuota, per formare un record logico.

Ogni linea è composta da un campo-valore di coppia.

Se desideri trovare tutti i record in cui campo 'd' ha un valore di'4 ', e se lo fa, vorrei che il valore del campo' uno '(da lo stesso record).

Ecco un esempio di file di input:
Citazione:
a 1
b 2
c 3
d 4
a 2
b 1
d 6

b 3
a 6
c 2

c 2
d 4
a 9

c 3
d 4
a 3

d 4
a 6
Vorrei finire con un file contenente:
Citazione:
1
6
Importa cose NORE circa il file di input sono: a) il numero di record varia, b) non tutti i record contengono un 'd' ambito, c), non tutti i record contengono un 'a' campo, e), i campi possono essere in qualsiasi ordine all'interno un record.

Penso che la risposta sarà quella di utilizzare AWK ma non ho molto scarsa conoscenza della AWK e sono utilizzati solo per le cose molto semplici.

Il sistema operativo è domenica da 5,8 la strada.

L'aiuto è molto apprezzato.

Grazie.

  #2 (permalink)  
Old 10-13-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmatore, autore
  
 

Iscriviti Data: marzo 2007
Luogo: Toronto, Canada
Interventi: 2.361

Basato sul contributo fornito, l'output dovrebbe essere:


Codice:
1
9
3
6

Questo script che vi darà:


Codice:
awk '
/a/ { a = $2 }
/d/ { d = $2 }
/^$/ && d == 4 && a > 0 {
   print a 
   a = -1
   d = -1
}
END {
   if ( d == 4 && a > 0 ) print a
}
' "$FILE"

  #3 (permalink)  
Old 10-13-2008
trifoglio shamrock is offline Forum Advisor  
Utente Registrato
  
 

Iscriviti Data: ottobre 2007
Posizione: Stati Uniti d'America
Interventi: 753
Poco chiaro

Sembra essere un grande divario tra le vostre esigenze e l'output che ci si aspetta. Sulla base di ciò che hanno dichiarato l'output dovrebbe essere simile cfajohnson's awk script ... corretto?
  #4 (permalink)  
Old 10-13-2008
brawnr brawnr is offline
Utente Registrato
  
 

Iscriviti Data: ottobre 2008
Interventi: 2
Siamo spiacenti, lei ha ragione, la produzione avrebbe dovuto leggere:


Codice:
 
1
9
3
6

Molte grazie per il vostro aiuto cfajohnson.
  #5 (permalink)  
Old 10-13-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Iscriviti Data: gennaio 2007
Ubicazione: Варна, България / Milano, Italia
Messaggi: 2.915
Con Perl:

Codice:
perl -00 -ne'print $1,"\n"if/d 4/&&/a (.)/' filename

E un altro approccio AWK:


Codice:
awk '/d 4/ && /a / {
  for (i=1; i<=NF; i++)
    if ($i == "a") print $(i+1)
	}' RS= filename


Ultimo a cura di radoulov; al 10/13/2008 04:03 PM.. Motivo: refactored
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 è 02:52 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