Repository 32bit  Forum
Repository 64bit  Wiki

Eliminare righe, ma con condizione multipla

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

Eliminare righe, ma con condizione multipla

Messaggioda EmaDaCuz » lun mag 19, 2008 19:30

Mi spiego.
Ho un foglio di calcolo piuttosto grande (52000 righe e 2 colonne) e con i vari spreadsheet non riesco a lavorarci vista la scarsita' delle mie risorse.
In pratica, dovrei eliminare le righe per cui si verifica contemporaneamente la condizione che il valore della colonna A e' maggiore di x e il valor della colonna B e' minore di y (con x e y da inserire di volta in volta). Ho salvato il file in .txt tabbed in modo da poterci lavorare con i classici strumenti di formattazione (awk,sed & company) ma non ho idea di come si possa applicare questa condizione multipla. Suppongo che le regex centrino qulacosa... :D

Un grazie mille per ogni eventuale secondo dedicato ad aiutarmi!
Avatar utente
EmaDaCuz
Linux 2.6
Linux 2.6
 
Messaggi: 863
Iscritto il: sab gen 28, 2006 15:47
Località: Nijmegen, NL
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch

Re: Eliminare righe, ma con condizione multipla

Messaggioda targzeta » lun mag 19, 2008 19:40

Posta due o tre righe e facci un esempio così almeno possiamo lavorarci meglio :)

Spina
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6156
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM

Re: Eliminare righe, ma con condizione multipla

Messaggioda EmaDaCuz » lun mag 19, 2008 19:51

Non so cosa intendi per esempio, provo a farne uno semplicissimo.
Ho il file N.txt, fatto in questa maniera

Codice: Seleziona tutto
FS Lin   SS Lin
555.0   380.0
358.0   475.0
347.0   326.0
472.0   485.0
420.0   427.0
428.0   401.0
693.0   472.0
202.0   251.0
496.0   531.0
1023.0   835.0
433.0   223.0
766.0   504.0
1023.0   995.0


e cosi' via. In questo caso voglio eliminare le righe in cui FS Lin>500 E SS Lin<400. In questo caso SPECIFICO verrebbe elminata solo la seconda riga (o meglio, la prima numerica).
Spero di essermi spiegato in maniera comprensibile. :D

Intanto grazie mille.
Avatar utente
EmaDaCuz
Linux 2.6
Linux 2.6
 
Messaggi: 863
Iscritto il: sab gen 28, 2006 15:47
Località: Nijmegen, NL
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch

Re: Eliminare righe, ma con condizione multipla

Messaggioda tgmx » lun mag 19, 2008 19:57

Io tempo fa, un problema simile al tuo (ma con condizioni più complesse) l'ho risolto importando i dati in MYSQL ed eseguendo una semplice query. Poi chiaramente avevo di nuovo esportati i dati in csv.
Tutto questo perchè non sono pratico con i fogli di calcolo ma credo che si possa tranquillamente fare direttamente da openoffice... :)
Avatar utente
tgmx
Linux 3.x
Linux 3.x
 
Messaggi: 1330
Iscritto il: ven apr 28, 2006 13:40
Località: Ancona
Slackware: 13.37
Desktop: KDE 4

Re: Eliminare righe, ma con condizione multipla

Messaggioda targzeta » lun mag 19, 2008 20:00

Usa awk
Codice: Seleziona tutto
awk '{ a=$1; b=$2; if ( a < 500 || b > 400 ) print $0; }' N.txt

Nota che ho stampato l'insieme complementare di quello da eliminare.

Spina
Linux Registered User #454438
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama
20/04/2013 - Io volevo Rodotà
Avatar utente
targzeta
Iper Master
Iper Master
 
Messaggi: 6156
Iscritto il: gio nov 03, 2005 14:05
Località: Carpignano Sal. (LE) <-> Pisa
Nome Cognome: Emanuele Tomasi
Slackware: current
Kernel: latest stable
Desktop: IceWM


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite