Scarica Fedora
Identità
 Non sei loggato!
Fedora 13
Scarica Fedora 13
Login
Nome utente:

Password:

Ricordami



Password persa?

Registrati ora!
Menu principale
Utenti
Utenti registrati:
Oggi: 0
Ieri: 1
Totali: 5829
Ultimo: papageno

Utenti Online:
Ospiti : 17
Iscritti : 1
Totali: 18
Online ora [Popup]
sasomao
Ultima Immagine
F13 netbook (18/8/2010)
F13 netbook
Sondaggi
Stanno nascendo delle distro dedicate ai singoli istituti scolastici. Cosa ne pensi?
Politica sbagliata, sarebbe meglio usare una distribuzione classica
Ottimo, queste distro sono semplici come i sistemi M$ e soddisfano le esigenze specifiche degli studenti
Ogni passo verso l'open source è benvenuto
Lo studente in questo modo non avrà nessuna nozione informatica in più di prima
Enti pubblici, scuole, università, Linux sta prendendo piede
Sarebbe bello poter creare dei posti di lavoro in più per supportare al meglio queste strutture
Altro (lascia il tuo commento)
Il sondaggio termina il 20/9/2010 22:00
I migliori Downloads
Ricerca avanzata

Naviga in questa discussione:   1 Utenti anonimi





logica, manipolazione testo ed operazioni numeriche
Guru
Iscritto il:
8/8/2008 20:52
Gruppo:
Utenti registrati
Messaggi: 556
Livello : 21
HP : 103 / 517
MP : 185 / 3152
EXP : 68
Offline
titolo da leggere mancanza di logica etc
Anche perche' non riesco nemmeno a capire cosa cercare su google.

Ho un file cosi strutturato:


ID    VALORE       
SIGLA1     1.123
SIGLA1     4.567
SIGLA2     8.910
SIGLA2     1.112
SIGLA2     1.314
SIGLA2     1.516
SIGLA3     1.718
SIGLA4     1.920
SIGLA4     2.122
SIGLA4     2.324
SIGLA4     2.526
SIGLA4     2.728
SIGLA5     2.930
SIGLA5     3.132
SIGLA5     3.334
.....    .....


Devo ottenere la somma dei valori per tutte le righe con sigla uguale. La sigla non ha un pattern. Cambia e cambia in modo casuale (sono coordinate geografiche espresse in modo particolare).

Non so cosa usare (awk? sempre lui in qualche modo?). Scoperto quello poi magari google diventa piu' amico ...

Grazie molte in anticipo!

Inviato: 9/2/2010 11:00
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Moderatore
Iscritto il:
7/5/2007 15:41
Da urano
Gruppo:
Collaboratori
Messaggi: 13101
Livello : 70
HP : 2617 / 2617
MP : 4367 / 17044
EXP : 79
Offline
legge il file, ne costruisce uno di appoggio contenente una sola sigla dello stesso tipo senza ripetizione ( usando uniq ).
terminata la costruzione legge il file di appoggio e dopo un confronto con il file originale, usa i valori per calcolarne la somma che viene associata alla sigla corrispondente.

Inviato: 9/2/2010 11:18
_________________
chi dice la verità a volte viene scoperto
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Guru
Iscritto il:
8/8/2008 20:52
Gruppo:
Utenti registrati
Messaggi: 556
Livello : 21
HP : 103 / 517
MP : 185 / 3152
EXP : 68
Offline
Grazie!

Adesso cerco come fare il confronto tra i due files!

Inviato: 9/2/2010 11:25
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Moderatore
Iscritto il:
7/5/2007 15:41
Da urano
Gruppo:
Collaboratori
Messaggi: 13101
Livello : 70
HP : 2617 / 2617
MP : 4367 / 17044
EXP : 79
Offline
1. loop sui campi del file di appoggio
2. legge campo del file di appoggio
3. somma=0
4. loop sui campi del file originale
5. confronta la 1-voce-file-appoggio e la 1-voce dei campi del file originale se uguale somma=somma+ 2 voce del campo
6. chiusura loop 4
7. scrive 1-voce-file-appoggio e somma
8. chiusura loop 1.

Inviato: 9/2/2010 11:34
_________________
chi dice la verità a volte viene scoperto
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Maestro
Iscritto il:
21/6/2009 15:30
Gruppo:
Utenti registrati
Messaggi: 365
Livello : 17
HP : 84 / 420
MP : 121 / 1497
EXP : 82
Offline
#!/bin/bash
for j in `seq 1 5(o altro numero massimo di sigle)`; do
    for 
i in `cat NOMEFILE | GREP SIGLA$j`; do
        
ADDENDO=`echo $i | cut -d " " -f6`
        
SOMMA[$j]=$(echo ";$SOMMA+$ADDENDO" bc)
    
done
echo "La somma delle SIGLA$j è ${SOMMA[$j]}"
done


Dovrebbe essere una cosa del genere, l'ho scritto direttamente senza provarlo, quindi potrebbe esserci qualche errore ma in linea di massima dovrebbe funzionare...

Mettilo in un file, dagli i permessi di esecuzione, avvialo e ti darà in output tutte le somme

Inviato: 9/2/2010 12:59
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Guru
Iscritto il:
8/8/2008 20:52
Gruppo:
Utenti registrati
Messaggi: 556
Livello : 21
HP : 103 / 517
MP : 185 / 3152
EXP : 68
Offline
Grazie per lo script che mi studio ben bene, anche perche' mi sono bloccata un pelo sul grep.

per adesso ho risolto (in parte) con awk (sempre lui il mitico!) e google:

cat miofile
.csv awk 'BEGIN { FS=OFS=","};{print $1,$34}' awk -F"," '
NR==1 {print}
NR!=1 {a[$1]+=$2}
END{for (i in a){print i,a[i]}}
'


Dove nel primo awk seleziono i due campi che mi servono e poi fa il resto. Trovato cercando "groupby awk".

Pero' nel pomeriggio cerco di farlo con lo script (tanto il computer e' impegnato a macinare dati )

Grazie ancora!

Inviato: 9/2/2010 13:07
Trasferisci l'intervento ad altre applicazioni Trasferisci

Re: logica, manipolazione testo ed operazioni numeriche
Maestro
Iscritto il:
21/6/2009 15:30
Gruppo:
Utenti registrati
Messaggi: 365
Livello : 17
HP : 84 / 420
MP : 121 / 1497
EXP : 82
Offline
Figurati! Se ti serve qualche chiarimento chiedi pure...

Inviato: 9/2/2010 13:31
Trasferisci l'intervento ad altre applicazioni Trasferisci





Puoi vedere le discussioni.
Non puoi inviare messaggi.
Non puoi rispondere.
Non puoi modificare.
Non puoi cancellare.
Non puoi aggiungere sondaggi.
Non puoi votare.
Non puoi allegare files.
Non puoi inviare messaggi senza approvazione.

[Ricerca avanzata]









Powered by © 2005 IMAGO:THEMES Theme Design by IMAGO DESIGN CORP. Icons Everaldo.com fentlinux
è un marchio registrato Redhat. Tutti i marchi e loghi sono di proprietà dei rispettivi proprietari.
Questo sito non è affiliato o appoggiato da Fedora Project.