FaciLinux

Guide Facili per Linux

Ultimamente mi è capitato di dover lavorare con file di testo generati da script powershell, in particolare dall'utility Out-File.

Il problema che ho trovato è stato nell'encoding del file generato da Powershell, che nel mio caso era UTF16-Little Endian, un encoding che mal si sposa con le utility di parsing dei file della bash.

Per scoprire con quale encoding ci stiamo confrontando, ci viene in aiuto il comando file; infatti Out-File supporta parecchi encoding in output (https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/out-file?view=powershell-6#parameters), quindi nel caso questa guida è da aggiustare con l'encoding che fa al caso vostro.

Il primo passo, come detto, è scoprire con quale encoding si ha a che fare:

[user@pc ~]$ file -i output_powershell.txt 
output_powershell.txt: text/plain; charset=utf-16le

La desiderata è di ottenere un file in UTF8, con i carriage return di linux, ed ecco come fare:

iconv -f UTF-16LE -t UTF8 output_powershell.txt | dos2unix > converted_output.txt

In caso manchi l'utiliy dos2unix è possibile installarla con il proprio gestore di pacchetti; per Arch ad esempio il comando è

sudo pacman -Su dos2unix

Il nostro file convertito è ora un ottimo candidato per passare sotto altri strumenti di parsing.

Buon lavoro!