[AWK e C++] programma per estrarre dei dati usando un ciclo for
Inviato: sabato 27 settembre 2008, 17:54
Ciao a tutti,
sono alle prime prese con AWK e ho già delle difficoltà...
in pratica devo lavorare su un file di log all'interno del quale mi interessa prendere alcune informazioni di una riga ben precisa che è questa (ne prendo una a caso di questo tipo per farvi capire):
3 END_DOWNLOAD 5 0 2 0 1 1 2 0 0
ecco in pratica io devo cercare nel file di log "sorgente.txt" tutte queste righe e lavorarci su. Nella fattispecie mi avevano consigliato di fare questa istruzione che scansiona l'intero file:
awk '{if($2=="END_DOWNLOAD" && $7==1) print ($1-$8)}' sorgente.txt > destinazione.txt
questa istruzione fa questo: quando il campo n°7 di una riga con "END_DOWNLOAD" vale 1, fa la differenza tra il primo campo e il settimo scrivendo il risultato sul file "destinazione.txt". Questo comando funziona bene, l'ho provato.
Ecco io adesso dovrei fare un ciclo for che cambi la condizione && $7==1 in una condizione che varia con i=1,2,...10 e cioè && $7==i, cioè mi serve un programmino AWK che scansioni l'intero file scrivendo sul file "destinazione.txt" prima tutte le condizioni in cui && $7==1, poi a seguire tutte le condizioni in cui && $7==2, e così via fino a && $7==10. Ho provato il seguente codice AWK/C++, ma ho qualche dubbio sull'effettivo funzionamento...non sono sicuro che scansioni il file nel modo che mi serve. Ecco il codice che ho provato:
awk '{for (i=1; i chunk4.txt
la mia perplessità nasce dal fatto che ripetendo le singole istruzioni
awk '{if($2=="END_DOWNLOAD" && $7==1) print ($1-$8)}' sorgente.txt > destinazione.txt
al variare di i=1,2,...,10 ottengo sempre lo stesso risultato (e deve venire così), se faccio il ciclo for il file risultante viene diverso e non è la concatenazione di tutti pezzi uguali...sapete aiutarmi? ???
(vi allego anche il log se volete fare delle prove)
ciao e grazie
sono alle prime prese con AWK e ho già delle difficoltà...
in pratica devo lavorare su un file di log all'interno del quale mi interessa prendere alcune informazioni di una riga ben precisa che è questa (ne prendo una a caso di questo tipo per farvi capire):
3 END_DOWNLOAD 5 0 2 0 1 1 2 0 0
ecco in pratica io devo cercare nel file di log "sorgente.txt" tutte queste righe e lavorarci su. Nella fattispecie mi avevano consigliato di fare questa istruzione che scansiona l'intero file:
awk '{if($2=="END_DOWNLOAD" && $7==1) print ($1-$8)}' sorgente.txt > destinazione.txt
questa istruzione fa questo: quando il campo n°7 di una riga con "END_DOWNLOAD" vale 1, fa la differenza tra il primo campo e il settimo scrivendo il risultato sul file "destinazione.txt". Questo comando funziona bene, l'ho provato.
Ecco io adesso dovrei fare un ciclo for che cambi la condizione && $7==1 in una condizione che varia con i=1,2,...10 e cioè && $7==i, cioè mi serve un programmino AWK che scansioni l'intero file scrivendo sul file "destinazione.txt" prima tutte le condizioni in cui && $7==1, poi a seguire tutte le condizioni in cui && $7==2, e così via fino a && $7==10. Ho provato il seguente codice AWK/C++, ma ho qualche dubbio sull'effettivo funzionamento...non sono sicuro che scansioni il file nel modo che mi serve. Ecco il codice che ho provato:
awk '{for (i=1; i chunk4.txt
la mia perplessità nasce dal fatto che ripetendo le singole istruzioni
awk '{if($2=="END_DOWNLOAD" && $7==1) print ($1-$8)}' sorgente.txt > destinazione.txt
al variare di i=1,2,...,10 ottengo sempre lo stesso risultato (e deve venire così), se faccio il ciclo for il file risultante viene diverso e non è la concatenazione di tutti pezzi uguali...sapete aiutarmi? ???
(vi allego anche il log se volete fare delle prove)
ciao e grazie