Ho visto questa dichiarazione PowerShell in un recente Hanselminutes post -
cat test.txt | foreach-object {$null = $_ -match '<FancyPants>(?<x>.*)<.FancyPants>'; $matches.x} | sort | get-unique
Sto cercando di imparare PowerShell in questo momento e penso che ho capito la maggior parte di ciò che sta accadendo -
- la dichiarazione scorre ogni riga di 'test.txt' e gestisce un regex contro la linea corrente
- Tutti i risultati vengono raccolti e quindi disposti ed i duplicati rimossi
mia comprensione sembra cadere giù su questa parte della dichiarazione -
$null = $_ -match '<FancyPants>(?<x>.*)<.FancyPants>'; $matches.x
- Qual è il '
$null =
' parte del codice facendo, ho il sospetto che questo è per gestire uno scenario in cui non può competere viene restituito ma non sono sicuro di come funziona ? - E '
$matches.x
' restituire le corrispondenze trovate?
Quindi '$ matches.x' contiene le corrispondenze per l'oggetto corrente, PS colloca automaticamente tutti i set di risultati' $ matches' in un set di risultati di grandi dimensioni? – ipr101
@ ipr101 No, mantiene solo l'ultima partita. Ho aggiornato la mia risposta con un esempio che è possibile utilizzare per vedere cosa c'è nella variabile '$ Matches'. – Rynant
grazie che ha più senso ora – ipr101