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.
Rispondi
Avatar utente
EmaDaCuz
Linux 3.x
Linux 3.x
Messaggi: 877
Iscritto il: sab 28 gen 2006, 15:47
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch
Località: Nijmegen, NL
Contatta:

Eliminare righe, ma con condizione multipla

Messaggio da EmaDaCuz »

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
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Eliminare righe, ma con condizione multipla

Messaggio da targzeta »

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

Spina
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Avatar utente
EmaDaCuz
Linux 3.x
Linux 3.x
Messaggi: 877
Iscritto il: sab 28 gen 2006, 15:47
Slackware: 12.0 - ma a Trieste
Kernel: 2.6.25
Desktop: Fluxbox
Distribuzione: Debian e Arch
Località: Nijmegen, NL
Contatta:

Re: Eliminare righe, ma con condizione multipla

Messaggio da EmaDaCuz »

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
tgmx
Linux 4.x
Linux 4.x
Messaggi: 1336
Iscritto il: ven 28 apr 2006, 14:40
Slackware: 14.1
Desktop: KDE 4
Località: Ancona

Re: Eliminare righe, ma con condizione multipla

Messaggio da tgmx »

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
targzeta
Iper Master
Iper Master
Messaggi: 6631
Iscritto il: gio 3 nov 2005, 14:05
Nome Cognome: Emanuele Tomasi
Slackware: 64-current
Kernel: latest stable
Desktop: IceWM
Località: Carpignano Sal. (LE) <-> Pisa

Re: Eliminare righe, ma con condizione multipla

Messaggio da targzeta »

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
Se pensi di essere troppo piccolo per fare la differenza, prova a dormire con una zanzara -- Dalai Lama

Rispondi