Cerca testo in file .txt

Se Windows genera un errore, hai un problema di virus o vuoi discutere/segnalare l'uscita della nuova versione di un software per la piattaforma Microsoft, questa è la sezione giusta.
Regole del forum
Rispondi
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Cerca testo in file .txt

Messaggio da SerioBg »

Ho bisogno di estrarre da grossi file txt la seguente sequenza : "parola:parola"; praticamente le voci unite fra loro dai due punti.
Sapete se è possibile e come si fa ? Possibilmente se fosse possibile anche modificando la sequenza.

Grazie


:bam
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Cerca testo in file .txt

Messaggio da System » mer apr 22, 2015 10:19 am


Avatar utente
Al3x
Amministratore
Amministratore
Messaggi: 4635
Iscritto il: mer mag 01, 2013 12:59 pm
Località: http://127.0.0.1

Re: Cerca testo in file .txt

Messaggio da Al3x »

estrarre per farne cosa? E' importante sapere dove finisce l'output per dare qualche indicazione più precisa ;)
I :amore Sasha
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Per fare un elenco in un altro file di testo
Avatar utente
Al3x
Amministratore
Amministratore
Messaggi: 4635
Iscritto il: mer mag 01, 2013 12:59 pm
Località: http://127.0.0.1

Re: Cerca testo in file .txt

Messaggio da Al3x »

presumo che con vbscript sia possibile realizzare facilmente uno script che svolga questa operazione. Vediamo se qualcuno sa come procedere
I :amore Sasha
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Cerca testo in file .txt

Messaggio da PippoDJ »

Al3x ha scritto:presumo che con vbscript sia possibile realizzare facilmente uno script che svolga questa operazione. Vediamo se qualcuno sa come procedere
Challenge accepted! :)

senzasoldi.vbs:

Codice: Seleziona tutto

ESPRESSIONEREGOLARE = "[a-z]+:[a-z]+"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TF = FSO.OpenTextFile("input.txt", 1)
TESTOIN = TF.ReadAll
TF.Close
Set RE = CreateObject("VBScript.RegExp")
RE.Global = True
RE.IgnoreCase = True   
RE.Pattern = ESPRESSIONEREGOLARE
Set RISULTATI = RE.Execute(TESTOIN)  
If RISULTATI.Count > 0 Then
   Set TF = FSO.OpenTextFile("output.txt", 2, True)
   For Each RISULTATO in RISULTATI
      TF.WriteLine(RISULTATO.Value)   
   Next
   TF.Close
   Wscript.Echo "Operazione completata."
Else
   Wscript.Echo "Espressione non trovata."
End If
Per semplicità il file di testo in ingresso deve chiamarsi input.txt e si deve trovare nella stessa cartella dello script VBS che, al termine dell'estrazione, scriverà il file output.txt contenente i risultati.

Il cuore del programma è tutto nella espressione regolare definita nella prima riga: modificandola opportunamente, si potrà usare lo stesso codice per altri scopi. Ad esempio: se le parole da cercare contengono anche caratteri numerici, basterà sostituire la prima riga con:
ESPRESSIONEREGOLARE = "[a-z0-9]+:[a-z0-9]+"

Ciao, Pippo.
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Molte grazie, mi sembra che funzioni. Desideravo sapere come posso inserire, oltre a lettere e numeri, eventuali caratteri particolari tipo "!;@./"nell'espressioneregolare al fine di raffinare la ricerca.

Grazie
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Cerca testo in file .txt

Messaggio da PippoDJ »

senzasoldi ha scritto:Desideravo sapere come posso inserire, oltre a lettere e numeri, eventuali caratteri particolari tipo "!;@./"nell'espressioneregolare al fine di raffinare la ricerca.
Vanno aggiunti, uno per uno, nelle espressioni comprese tra parentesi quadre. Usando come esempio i 5 caratteri "!;@./" che hai indicato diventerebbe:
ESPRESSIONEREGOLARE = "[a-z0-9!;@./]+:[a-z0-9!;@./]+"

Tieni presente che i caratteri "\", "^" e "-" hanno un significato speciale nelle espressioni regolari e, pertanto, vanno preceduti dal carattere di escape: "\\", "\^" e "\-":
ESPRESSIONEREGOLARE = "[a-z0-9\\\^\-]+:[a-z0-9\\\^\-]+"

A questo punto, se le coppie di parole sono separate solo da spazi, forse diventa più semplice usare un approccio "inverso":
ESPRESSIONEREGOLARE = "[^ \r\n]+:[^ \r\n]+"
che, in pratica, rileva qualsiasi carattere a parte gli spazi e gli "a capo".

Ciao, Pippo.
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Ho fatto come hai indicato, ma non ho ottenuto quanto speravo, perchè scrivendo " "[a-z0-9!]+:[a-z0-9!]+" pensavo di selezionare solo ed unicamente tutte le espressioni contenenti anche il punto esclamativo. Invece mi estrae tutte le espressioni con lettere, tutte le espressioni con lettere e numero e tutte le espressioni con lettere,numeri, e punto esclamativo.
Cosa devo scrivere per ottenere il risultato che interessa?


Grazie

N.B: non mandarmi a quel paese!!!
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Cerca testo in file .txt

Messaggio da PippoDJ »

senzasoldi ha scritto:Ho fatto come hai indicato, ma non ho ottenuto quanto speravo, perchè scrivendo " "[a-z0-9!]+:[a-z0-9!]+" pensavo di selezionare solo ed unicamente tutte le espressioni contenenti anche il punto esclamativo. Invece mi estrae tutte le espressioni con lettere, tutte le espressioni con lettere e numero e tutte le espressioni con lettere,numeri, e punto esclamativo.
Cosa devo scrivere per ottenere il risultato che interessa?
Oops... sorry: avevo interpretato male la tua richiesta. La faccenda si complica un po'...

Per estrarre le espressioni che contengono "!" in entrambe le parole ai lati dei ":":
ESPRESSIONEREGOLARE = "[^\s]*!+[^\s]*:[^\s]*!+[^\s]*"

Per estrarre le espressioni che contengono "!" anche solo in una delle due parole ai lati dei ":":
ESPRESSIONEREGOLARE = "[^\s]*!+[^\s]*:[^\s]+|[^\s]+:[^\s]*!+[^\s]*"
N.B: non mandarmi a quel paese!!!
Certo che no... però adesso mi serve qualcosa che faccia passare il mal di testa. xP ;)
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Molte grazie. Tutto a posto


:grazie
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Rispolvero una vecchia discussione : alle espressioni sopra indicate è possibile aggiungere la condizione: se nella riga sotto compare la parola "IT" ?

Grazie

:clap
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Cerca testo in file .txt

Messaggio da PippoDJ »

senzasoldi ha scritto:se nella riga sotto compare la parola "IT" ?
Per essere sicuro di capire bene cosa ti serve, potresti inserire qualche riga come esempio del testo in ingresso in un tag "Code" e il corrispondente output che ti aspetti di ottenere (sempre in un altro tag "Code")?
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Scusa, ti rispondo come posso. Ho un file di testo così strutturato:

"Cliente : Barbarafitzpatrick .com:jcfpa475
Indirizzo mail : Nazionalità|US
Cliente : Cearius .com:kakashe
Indirizzo mail : Nazionalità|US
Cliente : Charottips .com:C17t07G96
Indirizzo mail : Nazionalità|PY
Cliente : CocoBean66 .com:raylin66
Indirizzo mail : Nazionalità|US"

e desidero ottenere :

"Barbarafitzpatrick .com:jcfpa475|US
Cearius .com:kakashe|US
CocoBean66 .com:raylin66|US"

Praticamente mail e nazionalità omogenea del cliente. (senza virgolette)


Spero di essere stato chiaro.

Grazie

Ho tolto gli indirizzi email, non è il caso di farli vedere così apertamente.
By crazy.cat
Avatar utente
PippoDJ
Livello: Storage Area Network (12/15)
Livello: Storage Area Network (12/15)
Messaggi: 1678
Iscritto il: sab nov 01, 2014 3:50 pm

Re: Cerca testo in file .txt

Messaggio da PippoDJ »

Potresti provare:
ESPRESSIONEREGOLARE = ".*\n.*\|US"

C'è però un accorgimento: visto che l'espressione deve trovare corrispondenza su più di una riga, è necessario aggiungere:
RE.MultiLine = True
...al codice VBS visto sopra (è questo che ha determinato un certo ritardo nella risposta :fiu ).

Per cui lo script modificato diventerebbe:

Codice: Seleziona tutto

ESPRESSIONEREGOLARE = ".*\n.*\|US"

Set FSO = CreateObject("Scripting.FileSystemObject")
Set TF = FSO.OpenTextFile("input.txt", 1)
TESTOIN = TF.ReadAll
TF.Close
Set RE = CreateObject("VBScript.RegExp")
RE.Global = True
RE.IgnoreCase = True   
RE.MultiLine = True
RE.Pattern = ESPRESSIONEREGOLARE
Set RISULTATI = RE.Execute(TESTOIN)  
If RISULTATI.Count > 0 Then
   Set TF = FSO.OpenTextFile("output.txt", 2, True)
   For Each RISULTATO in RISULTATI
      TF.WriteLine(RISULTATO.Value)   
   Next
   TF.Close
   Wscript.Echo "Operazione completata."
Else
   Wscript.Echo "Espressione non trovata."
End If
Avatar utente
SerioBg
Livello: microSD (7/15)
Livello: microSD (7/15)
Messaggi: 312
Iscritto il: ven lug 12, 2013 5:47 am

Re: Cerca testo in file .txt

Messaggio da SerioBg »

Molte grazie; Così può andare.
System
System
Bot ufficiale TurboLab.it
Bot
Messaggi:
Iscritto il: sab dic 31, 2016 6:19 pm
Contatta: Contatta

Re: Re: Cerca testo in file .txt

Messaggio da System » ven dic 30, 2016 11:22 pm


Rispondi
  • Argomenti simili
    Risposte
    Visite
    Ultimo messaggio