Utilizza le cmdlets di PowerShell per imparare le basi: come recuperare il testo dai file di testo e come trovare il testo nei file di testo.
Uno dei compiti più frequenti che un professionista IT deve fare è creare, leggere o modificare i file di testo in qualche modo. I file di testo sono rappresentati in migliaia di formati diversi, dai semplici file TXT a XML a vari formati proprietari. Poiché i file di testo possono essere strutturati in un numero enorme di modi, i venditori hanno adottato il semplice file di testo come mezzo per definire script, memorizzare valori di configurazione e query SQL e molto altro. L’unica differenza strutturale in un file TXT e un file SQL, per esempio, è solo l’estensione del file. Il contenuto è solo testo strutturato in un modo diverso e predefinito.
PowerShell ha molti modi diversi per gestire tutti questi tipi di file di testo, ma in questo articolo ci atterremo all’approccio più generico: Ci concentreremo sulla lettura e sul testo non strutturato. Questo significa nessun file XML, nessun file di query SQL, nemmeno gli stessi script PowerShell. Ci concentreremo su due argomenti:
- Come recuperare il testo dai file di testo.
- Come trovare il testo nei file di testo.
Come recuperare il testo dai file di testo
Uno dei compiti più semplici è recuperare tutto il testo da un file di testo esistente. Per la maggior parte dei file di testo, uno scripter PowerShell può usare il cmdlet Get-Content. Il cmdlet Get-Content è un cmdlet PowerShell molto popolare che recupera tutto il testo da un file di testo specificato dal parametro Path.
Nel modo più semplice, puoi passare il parametro Path con il percorso del file di testo come argomento al cmdlet Get-Content. Diciamo che ho un file chiamato MyText.txt. In questo file di testo ho le tre linee mostrate qui sotto e vorrei ottenere il contenuto di MyText.txt con uno script PowerShell.
Per fare questo, posso usare Get-Content con il parametro Path.
Vedete che il risultato è l’intero contenuto di MyText.txt. Ma se si volesse vedere solo un particolare numero di riga? Per impostazione predefinita, Get-Content legge ogni riga di un file di testo e crea un array come output con ogni riga del testo come elemento dell’array. Questo significa che posso facilmente individuare elementi diversi in quell’array specificando il numero di indice dell’array. In questo caso, il numero di indice dell’array è uguale al numero di riga del file di testo.
Nell’esempio sopra, vi sto mostrando che il risultato di Get-Content è un tipo di System.Array e che usando i numeri di indice tra parentesi posso scegliere quali righe voglio che vengano mostrate alla mia console. Una cosa da notare è che se non avete familiarità con gli array e il loro schema di numerazione, il primo elemento di un array inizia con uno zero. Questo è il motivo per cui sono in grado di usare il numero uno per scegliere la seconda riga e il numero due per scegliere la terza riga. Questo è importante da ricordare.
Come trovare il testo nei file di testo
Una volta che sei in grado di capire come trovare tutto il testo nei file di testo o certi numeri di linea, un altro compito popolare è trovare testo specifico dentro i file stessi. Ci sono alcuni modi diversi per farlo, ma il più semplice è usare il cmdlet Where-Object. Il cmdlet Where-Object è un popolare cmdlet che permette di “filtrare” varie informazioni dall’output di altri cmdlet; in questo esempio, sta filtrando le informazioni dal cmdlet Get-Content.
Usando il nostro precedente file di testo come esempio, diciamo che voglio vedere se quel file di testo contiene le parole “text file” insieme in esso. Per farlo, userò Where-Object.
Quando uso Where-Object devo usare la variabile $_. Questa è una variabile speciale in PowerShell conosciuta come la variabile pipeline. In questo esempio, rappresenta ogni linea del file di testo come viene da Get-Content. Sto poi usando l’operatore like e usando i caratteri jolly per vedere se la stringa “text file” esiste in una qualsiasi delle linee del file di testo. Sembra che abbia trovato due righe che corrispondono alla stringa.
Se vuoi imparare di più su come trovare il testo nei file di testo ti suggerisco di guardare gli operatori di confronto di PowerShell. Usando l’operatore match, per esempio, si usa la regex, che è molto più potente dell’operatore like e permette di trovare praticamente qualsiasi schema che si possa pensare in un file di testo.