View Full Version : Script x formattazione testo
E' possibile creare uno script che in automatico mi formatti il testo di un file?
Grazie
cosa intendi per formattare? che modifiche devono essere fatte?
se cerchi un programma per formattare sorgenti in linguaggio C puoi usare indent, per programmi in java jalopy
Ciao, innanzitutto ti ringrazio per l'aiuto, mi serviva per importare in mysql un file di testo su cui arrivano dei dati dalla porta seriale, ma poi ho scoperto che nell'istruzione di mysql "load data infile" è possibile settare un delimitatore di testo qualsiasi (mentre io pensavo che mysql accettasse solo valori separati dal tab).
Ciao
:)
Ciao come non detto, purtroppo il centralino attaccato alla seriale oltre alla stringa mi invia dati per me inutili. TI posto un esempio:
LDK-100 System
Version PROGETTO90P-2.0Da MAR/03
DATE: 05/24/05
TIME: 11:02:27
SITE NAME :
ENTER PASSWORD: *
Access Canceled!
3911 122 013 00:01:11 24/05/05 11:01 O027006543
LDK-100 System
Version PROGETTO90P-2.0Da MAR/03
DATE: 05/24/05
TIME: 11:02:32
SITE NAME :
ENTER PASSWORD: *
Access Canceled!
3910 122 013 00:01:11 24/05/05 11:01 O027006543
Io vorrei creare uno script che in automatico mi elabori il testo e che mi faccia rimanere solo le stringhe numeriche in questa forma:
3911 122 013 00:01:11 24/05/05 11:01 O027006543
3910 122 013 00:01:11 24/05/05 11:01 O027006543
Si può fare?
Grazie
Ciao
basta che trovi una ricorrenza significativa nel testo che ti serve estrarre, qualcosa del tipo "riga che inizia con 391" -> ok , e poi puoi usare un tool di trattamento testi come sed o awk
ripensandoci se si tratta semplicemente di scartare le righe che non contengono un identificatore valido puoi anche usare grep
grep ^391 nome_file >nome_nuovo_file
estrae tutte le righe che iniziano per 391 dal file nome_file e le mette in nome_nuovo_file
Fantastico, provo e ti faccio sapere!!!
Grazie
:)
Purtroppo col grep diventa un bel casino perchè quella riga numerica pgni volta è diversa, l'unica cosa che resta uguale sono degli 0 separati da spazi a fine riga ma non so come dire a grep di contare gli spazi.
Non c'è un modo per dirgli di cancellare tutte le righe che cominciano per...?
In questo modo mi ritroverei solo le stringhe che mi interessano.
Grazie
:)
due modi, ma ce ne sono decine:
1) col sed (occhio che il file originale viene sostituito
sed -i '/^?/d' nome_file
2) col grep
grep -v ^? nome_file >nome_nuovo_file
Risolto, per gli spazi bastava mettere gli apici :) !!!
Ora incrociando le dita dovrebbe essere ok.
Un ultimissima cosa: nel nuovo file le righe sono formattate cosi:
3911 122 013 00:01:11 24/05/05 11:01 O027006543
3910 122 013 00:01:11 24/05/05 11:01 O027006543
3911 122 013 00:01:11 24/05/05 11:01 O027006543
3910 122 013 00:01:11 24/05/05 11:01 O027006543
Tra un dato e l'altro c'è un solo spazio, tranne che tra il secondo e il terzo dato (c'è ne sono tre anche se da qui non si vede). Siccome a mysql gli dico di usare come delimitatore un solo spazio, nell'inserimento mi sfalsa tutti i dati dal terzo campo in poi. C'è un modo per eliminare i due spazi senza dover ricorrere a due campi vuoti tra il secondo e il terzo dato?
Ti ringrazio tantissimo, mi sdebiterò con una birra:)!
Ciao
anche qui hai diverse maniere.
per sostituire tutte le occorrenze di più spazi con uno spazio solo:
sed -e 's/ \{2,\}/ /g' nome_file
Fantastico!!!!!!
Era proprio ciò di cui avevo bisogno, mi hai risolto un grosso problema.
Ora ho preparato uno script che mi ingloba tutto questo, lo testoper un pò e poi passo alla configurazione di mysql.
Ti ringrazio tantissimo, per sdebitarmi se mi dai l'indirizzo ti spedisco la famosa birra :p
:)
Ciao Kingv ho ancora un piccolo problemino: mi serve su una stringa di testo poter sostituire ogni tot spazi con un :
In pratica la stringa da cosi mi serve che diventi cosi:
5374 128 004 00 00 54 06/06/05 08 15 0248919360 ** 0 .00
5374 128 004 00:00:54 06/06/05 08:15 0248919360 ** 0 .00
E' possibile fare ciò?
Grazie
non è molto elegante ma puoi fare :
awk '{print $1" "$2" "$3" "$4":"$5":"$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' tuo_file.txt
non mi viene in mente niente di meglio :fagiano:
non è molto elegante ma puoi fare :
awk '{print $1" "$2" "$3" "$4":"$5":"$6" "$7" "$8" "$9" "$10" "$11" "$12" "$13}' tuo_file.txt
non mi viene in mente niente di meglio :fagiano:
GRAZIE!!! :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.