Ho un file con codifica UTF-8 con BOM e voglio rimuovere la BOM. Esistono strumenti da riga di comando Linux per rimuovere la distinta base dal file?
$ file test.xml
test.xml: XML 1.0 document, UTF-8 Unicode (with BOM) text, with very long lines
Risposta accettata:
Se non sei sicuro che il file contenga una distinta base UTF-8, allora questo (supponendo l'implementazione GNU di sed
) rimuoverà la distinta base se esiste o non apporterà modifiche in caso contrario.
sed '1s/^xEFxBBxBF//' < orig.txt > new.txt
Puoi anche sovrascrivere il file esistente con -i
opzione:
sed -i '1s/^xEFxBBxBF//' orig.txt
Se stai usando la versione BSD di sed
(ad es. macOS), quindi devi fare in modo che bash esegua l'escape:
sed $'1s/xefxbbxbf//' < orig.txt > new.txt