Espressioni regolari con PowerShell

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1721
Iscrizione: giovedì 24 dicembre 2020, 15:58

Espressioni regolari con PowerShell

Messaggio da korda »

Premessa: anche se non si tratta strettamente di ambito linux un utente molto attivo in questa sezione mi ha consigliato comunque di provare ad aprire la discussione

Obiettivo: vorrei reperire e parsare i messaggi di log di sistema di Windows. Alcuni messaggi sono multilinea con una descrizione estesa, ma visto che voglio crearmi un tabulato in formato .csv UTF8 (la conversione la faccio a posteriori) per convenienza vorrei recuperare solo la prima riga.

Problema: sembra che alcuni messaggi mutlilinea adottino la notazione unix (\n), altri utilizzano la notazione windows (\r\n), altri ancora ...boh! :nono:
Per catturare solo la prima riga ho già provato, senza successo, le seguenti espressioni regolari:
^(.*)[\r\n]+
^(.*)(\n|\r|\r\n)+
^(.*)\r*\n*

Nessuna di queste risolve tutte le possibili casistiche. L'unica soluzione che funziona sembra impiegare due espressioni regolari annidate:

Codice: Seleziona tutto

$message -match "^(.*)\r+"
if ($matches[1]) {
    $string = $matches[1]
} else {
    $message -match "^(.*)\n+"
    if ($matches[1]) {
        $string = $matches[1]
    } else {
        $string = $message
    }
}
Questa soluzione però non mi soddisfa per niente (troppe righe di codice). Idee?
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Espressioni regolari con PowerShell

Messaggio da vaeVictis »

Allega il file, il file e non il copia incolla, ma il file che vuoi manipolare e che comprenda tutte le casistiche sulle linee che vuoi estrarre.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1721
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Espressioni regolari con PowerShell

Messaggio da korda »

vaeVictis ha scritto:
domenica 28 novembre 2021, 12:00
Allega il file, il file e non il copia incolla, ma il file che vuoi manipolare e che comprenda tutte le casistiche sulle linee che vuoi estrarre.
Non è così immediato... i log provengono da più file .evtx (credo siano XML più o meno edulcorati). I log li reperisco usando dei cmdlet, in più i diversi messaggi multilinea compaiono a seguito di specifici eventi di sistema.

Dovrei riprodurre tutte le casistiche, e poi butto dentro tutti i messaggi in un file UTF8 raw (non parsato).

Ci vuole un pochino di tempo, appena lo trovo ve lo produco.
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Espressioni regolari con PowerShell

Messaggio da vaeVictis »

Il programma logparser per convertire gli evtx in csv e poi prendere il primo campo che forse corrisponde alla prima riga lo hai già provato?
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
korda
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1721
Iscrizione: giovedì 24 dicembre 2020, 15:58

Re: Espressioni regolari con PowerShell

Messaggio da korda »

vaeVictis ha scritto:
domenica 28 novembre 2021, 12:24
Il programma logparser per convertire gli evtx in csv e poi prendere il primo campo che forse corrisponde alla prima riga lo hai già provato?
Volevo evitare di accedere dorettamente agli evtx (che contengono l'universomondo): con i cmdlet filtro subito solo i log degli ultimi 15 minuti, ad esempio.

Comunque ora cerco logparser e vedo come performa...
Io non sono Bagheera né Akela, io non frequento la Rupe.
Io sono Kaa: faccio ballare le scimmie alle Tane Fredde.
Avatar utente
vaeVictis
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4703
Iscrizione: venerdì 27 luglio 2012, 17:58
Desktop: Gnome
Distribuzione: Ubuntu 20.04 64bit

Re: Espressioni regolari con PowerShell

Messaggio da vaeVictis »

Aspetto il file, allora.
Pirates arrrrrrrrrrr awesome!!!
«I fear not the man who has practiced 10000 kicks once,
but I fear the man who has practiced one kick 10000 times.»
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: Conte Mascetti e 23 ospiti