PDA

Visualizza la versione completa : [SHELL] filtrare le righe di un file


tiro1997
07-07-2010, 22:12
Salve,
ho due file di testo, 1 contiene dei dati statistici ed in ogni riga ci sono le misure rilevate in una singola giornata, in un altro file
ho una serie di date(una per riga)

dovrei trovare una sequenza di comandi per filtrare il primo file ottenendo in output solo le righe che hanno la data che appare anche nel secondo file..
una specie di grep ripetuto sul primo file in base ad ogni valore elencato nel secondo..

Esempio:
Primo file : i dati
2007-01-22,XXXX
2007-01-19,XXXX
2007-01-18,XXXX
2007-01-17,XXXX
2007-01-16,XXXX
2007-01-15,XXXX
2007-01-12,XXXX
2007-01-11,XXXX
2007-01-10,XXXX
2007-01-09,XXXX
2007-01-08,XXXX
2007-01-05,XXXX

Secondo file : le date
2007-01-17
2007-01-16
2007-01-11
2007-01-05

Dopo l'operazione da shell dovrebbe rimanere:
2007-01-17,XXXX
2007-01-16,XXXX
2007-01-11,XXXX
2007-01-05,XXXX

Grazie, per ogni eventuale aiuto!

Mutato
08-07-2010, 23:18
In pratica avevi la soluzione.



1 #!/bin/bash
2
3 data_a=data_a.txt
4 data_b=data_b.txt
5 data_c=/dev/stdout
6
7 for b in `cat $data_b`; do
8 grep $b $data_a >> $data_c
9 done


data_{a,b,c} sono rispettivamente il tuo primo file, il secondo file e il risultato.
:ciauz:

Mutato
09-07-2010, 11:03
Se vuoi essere ancora piu` preciso:



grep -e "^$b," $data_a >> $data_c


questo impedisce che l'eventuale presenza della data dopo la virgola risulti un falso positivo.

Loading