Debianizzati.Org | Forum | Blog | Guide | IRC
 
 
Forum Italiano Debian - Debianizzati.Org
Agosto 29, 2008, 11:50:07 am *
Benvenuto, Visitatore. Per favore, effettua il login o registrati.
Hai perso la tua email di attivazione?

Login con username, password e lunghezza della sessione
News:
 
   Home   Help Ricerca Calendario Login Registrati  
Pagine: [1]   Vai Giù
  Stampa  
Autore Topic: manipolazione di un luungo file di testo:  (Letto 430 volte)
0 Utenti e 1 Visitatore stanno guardando questo topic.
Barzi
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 32


Guarda Profilo
« il: Novembre 08, 2007, 10:45:28 am »

Ciao a tutti.
Ho un problema. Ho un file di testo diviso a blocchi. In particolare è un file in cui ridireziono ogni giorno il contenunto di una dir. Per ogni giorno ho quindi tanti blocchi nello stesso file di testo in questo formato

Codice:
echo ""
date >> storico.txt
echo ""
ls -l pippo/ >> storico.txt
echo -e "\n\n\n\n"

Questo è ciò che faccio tutti i giorni. Quello che ora devo fare è vedere se ci sono delle variazioni nel contenuto di ./pippo/ tra ieri e oggi. Vi riporto un esempio con la struttura dei blocchi del file di testo:

Codice:

...

Thu Nov  7 02:00:01 CET 2007

total 6889
-rw-rw-r-- 1 barzi barzi   30832 Oct 12 14:21 awdf.o
-rw-rw-r-- 1 barzi barzi  198799 Oct 19 19:03 brgwe.tgz
-rw-rw-r-- 1 barzi barzi  308443 Oct 31 10:47 cqwe.tgz
-rw-rw-r-- 1 barzi barzi   23741 Oct 23 09:52 dfqw.tgz
-rw-rw-r-- 1 barzi barzi  111707 May 30 17:57 eljeh.tgz
-rw-rw-r-- 1 barzi barzi   10620 Oct 12 14:21 fi4e.o
-rw-rw-r-- 1 barzi barzi  459078 Oct 12 14:21 gefe.o
-rw-rw-r-- 1 barzi barzi  561250 Oct 12 14:21 hey.tgz
-rw-r--r-- 1 barzi barzi  754475 Feb 26  2007 ifrt.imo
-rw-r--r-- 1 barzi barzi    1914 May 17 09:31 leqdf.tgz
-rw-rw-r-- 1 barzi barzi    9973 Feb 14  2007 mtdut.tgz
-rw-rw-r-- 1 barzi barzi   24294 Feb 14  2007 ntp.tgz
-rw-rw-r-- 1 barzi barzi  163361 Oct  8 12:22 osf.tgz
-rw-rw-r-- 1 barzi barzi  118350 Oct 12 14:18 prr.tgz
-rw-rw-r-- 1 barzi barzi    6165 Jun 26 16:05 pss.tgz
-rw-rw-r-- 1 barzi barzi  348474 Aug 22 08:22 purc.tgz
-rw-r--r-- 1 barzi barzi 2974017 Jun 28 16:20 raere.imo
-rw-rw-r-- 1 barzi barzi   85473 Mar 12  2007 rbhu.tgz
-r--r--r-- 1 barzi barzi   96 Jun 25 18:22 rorr.map
-rw-rw-r-- 1 barzi barzi   35489 Aug 24 09:18 sanhs.tgz
-rw-rw-r-- 1 barzi barzi 455256 Oct 30 17:20 snmrr.tgz
-rw-rw-r-- 1 barzi barzi  224853 Jul 11 09:38 tuiro.tgz
-rw-rw-r-- 1 barzi barzi     636 Feb 14  2007 uaerg.tgz
-rwxr-xr-x 1 barzi barzi    2567 Aug 22 17:20 upgrade.sh
drwxrwxr-x 2 barzi barzi    1024 Feb 26  2007 utils
-rw-rw-r-- 1 barzi barzi    1027 Aug  3 18:03 utils.tgz
-rw-rw-r-- 1 barzi barzi   13008 Aug 30 09:27 vuus.tgz
-rw-rw-r-- 1 barzi barzi   66880 Mar 12  2007 zfdkjò.tgz




Thu Nov  8 02:00:01 CET 2007

total 6889
-rw-rw-r-- 1 barzi barzi   30832 Oct 12 14:21 awdf.o
-rw-rw-r-- 1 barzi barzi  198799 Oct 19 19:03 brgwe.tgz
-rw-rw-r-- 1 barzi barzi  308443 Oct 31 10:47 cqwe.tgz
-rw-rw-r-- 1 barzi barzi   23741 Oct 23 09:52 dfqw.tgz
-rw-rw-r-- 1 barzi barzi  111707 May 30 17:57 eljeh.tgz
-rw-rw-r-- 1 barzi barzi   10620 Oct 12 14:21 fi4e.o
-rw-rw-r-- 1 barzi barzi  459078 Oct 12 14:21 gefe.o
-rw-rw-r-- 1 barzi barzi  561250 Oct 12 14:21 hey.tgz
-rw-r--r-- 1 barzi barzi  754475 Feb 26  2007 ifrt.imo
-rw-r--r-- 1 barzi barzi    1914 May 17 09:31 leqdf.tgz
-rw-rw-r-- 1 barzi barzi    9973 Feb 14  2007 mtdut.tgz
-rw-rw-r-- 1 barzi barzi   24294 Feb 14  2007 ntp.tgz
-rw-rw-r-- 1 barzi barzi  163361 Oct  8 12:22 osf.tgz
-rw-rw-r-- 1 barzi barzi  118350 Oct 12 14:18 prr.tgz
-rw-rw-r-- 1 barzi barzi    6165 Jun 26 16:05 pss.tgz
-rw-rw-r-- 1 barzi barzi  348474 Aug 22 08:22 purc.tgz
-rw-r--r-- 1 barzi barzi 2974017 Jun 28 16:20 raere.imo
-rw-rw-r-- 1 barzi barzi   85473 Mar 12  2007 rbhu.tgz
-r--r--r-- 1 barzi barzi   96 Jun 25 18:22 rorr.map
-rw-rw-r-- 1 barzi barzi   35489 Aug 24 09:18 sanhs.tgz
-rw-rw-r-- 1 barzi barzi 455256 Oct 30 17:20 snmrr.tgz
-rw-rw-r-- 1 barzi barzi  224853 Jul 11 09:38 tuiro.tgz
-rw-rw-r-- 1 barzi barzi     636 Feb 14  2007 uaerg.tgz
-rwxr-xr-x 1 barzi barzi    2567 Aug 22 17:20 upgrade.sh
drwxrwxr-x 2 barzi barzi    1024 Feb 26  2007 utils
-rw-rw-r-- 1 barzi barzi    1027 Aug  3 18:03 utils.tgz
-rw-rw-r-- 1 barzi barzi   13008 Aug 30 09:27 vuus.tgz
-rw-rw-r-- 1 barzi barzi   66880 Mar 12  2007 zfdkjò.tgz


bash$

Chiaramente di questi blocchi ce ne sono una quantità enorme. Quello che ora devo fare è prendere l'ultimo blocco, il penultimo e farne la differenza per vedere se ci sono variazioni riguardo:

1) il numero di file contenuti nella cartella.
2) se ci sono state variazioni su ogni singolo file.

Devo infine memorizzare tutte le date in cui sono presenti variazioni su un file di testo a parte.Come fo? Ho pensato che il cuore dll'algortimo sia un "diff" che prende i dati da qualche manipolazione con "awk".
Chi mi da una mano?Ho pensato di fare una cosa del genere:

1) Prendere l'ultimo blocco (magari selezionandolo con un separatore di riga "riga vuota" tenendo conto che tra la data e la lista dei files c'è cmq una riga vuota che va mantenuta) e ridirezionarlo su a.txt
2) Come sopra prendere il penultimo blocco e redirezionarlo verso b.txt. In questo caso la selezione è mooolto piu complessa.
3) fare il diff tra a.txt e b.txt

Almeno a naso è ciò che ho pensato. Qualcuno potrebbe aiutarmi piu in dettaglio?
Grazie :-)
Loggato
metaldaze
Global Moderator
Hero Member
*****

Karma: +24/-2
Offline Offline

Posts: 910


Guarda Profilo
« Risposta #1 il: Novembre 08, 2007, 02:41:49 pm »

Con "variazioni su ogni singolo file" cosa intendi? Comunque io lascerei perdere diff e giocherei un po' con Perl. In pratica farei leggere allo script il file in modo tale che ogni blocco venga inserito in un array associativo che ha come chiave la data del file e come valori degli array contenenti i dati dei file. A questo punto bisognerebbe esaminare il contenuto degli ultimi due array contenuti nell'array associativo ed estrapolare da lì i valori utili. Se mi dai qualche informazione più dettagliata sul risultato che vuoi ottenere provo a buttare giù due righe di codice.
Loggato
Barzi
Newbie
*

Karma: +0/-0
Offline Offline

Posts: 32


Guarda Profilo
« Risposta #2 il: Novembre 08, 2007, 03:00:05 pm »

Ragazzi ho risolto il problema.  Grin

Ho cambiato struttura e mi sono fatto un algoritmo (in linguaggio naturale) in cui non mi occorre più utilizzare questo file di testo per la manipolazione dei dati.

Mi occorre però una procedura (non so se con diff sia possibile... forse si può fare con perl ma non l'ho mai utilizzato) che faccia ciò:

PROBLEMA:
Ho 2 cartelle a e b. Ora voglio che in un file c mi vengano memorizzati i nomi dei files che differiscono tra a e b. Ovvero (in linguaggio naturale)

c="contenuto di a" - "contenuto di b"

Chi mi aiuta??
Thanx!!  Wink
Loggato
gallows
Full Member
***

Karma: +2/-1
Offline Offline

Posts: 107


gall0ws@tiscali.it
Guarda Profilo WWW
« Risposta #3 il: Dicembre 02, 2007, 05:25:17 pm »

Codice:
#!/bin/bash                                                                                 

set_a=`ls a`
set_b=`ls b`

for i in $set_a
do
    if ! echo $set_b | grep -qw $i; then echo $i >> c; fi                                     
done

Codice:
> ls a b     
a:
paperino  pippo  pluto

b:
paperino  paperone  pluto  topolino
> cat c
pippo
Loggato

The name "ubuntu" comes from the Zulu and Xhosa concept of ubuntu, and can be roughly defined as: "I can't install Debian".
Pagine: [1]   Vai Su
  Stampa  
 
Salta a:  

Altri Topic Correlati
Oggetto Iniziato da Risposte Visto Ultimo Post
apt-get install da file di testo Apt-get & friends net_deity 5 233 Ultimo Post Novembre 19, 2005, 02:28:12 pm
da tindal
Import da file di testo Scripting FabryProg 3 579 Ultimo Post Aprile 07, 2006, 07:15:53 pm
da FabryProg
Sostituire/Aggiungere testo in un file Scripting pirpy 9 883 Ultimo Post Agosto 06, 2007, 02:42:45 pm
da pirpy
Inserire testo in un file in modo ricorsivo Scripting pirpy 4 485 Ultimo Post Ottobre 19, 2007, 07:50:18 am
da jejenio
Aggiungere testo di un file in un altro file Scripting pirpy 2 387 Ultimo Post Novembre 26, 2007, 01:41:50 pm
da pirpy
Powered by MySQL Powered by PHP Powered by SMF 1.1.5 | SMF © 2006-2007, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
Traduzione Italiana a cura di SMItalia
XHTML 1.0 Valido! CSS Valido!
Pagina creata in 0.139 secondi con 23 queries.