|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
Script x formattazione testo
E' possibile creare uno script che in automatico mi formatti il testo di un file?
Grazie |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
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 |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 ![]() |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
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
|
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
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 |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
Fantastico, provo e ti faccio sapere!!!
Grazie ![]() |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 ![]() |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
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 |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
anche qui hai diverse maniere.
per sostituire tutte le occorrenze di più spazi con uno spazio solo: sed -e 's/ \{2,\}/ /g' nome_file |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 ![]() ![]() |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
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 |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Jan 2001
Città: Milano
Messaggi: 5707
|
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 ![]() |
![]() |
![]() |
![]() |
#15 | |
Senior Member
Iscritto dal: Nov 2001
Messaggi: 3103
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:25.