Pourquoi mon script Bash ajoute & lt; feff & gt; au début des fichiers?

J'ai écrit un script qui nettoie .les fichiers csv, enlevant un peu de mal virgules et les mauvaises citations (mauvais, signifie qu'ils cassent un programme de la maison que nous utilisons pour transformer ces fichiers) à l'aide de sed:

# remove all commas, and re-insert the good commas using clean.sed
sed -f clean.sed $1 > $1.1st

# remove all quotes
sed 's/\"//g' $1.1st > $1.tmp

# add the good quotes around good commas
sed 's/\,/\"\,\"/g' $1.tmp > $1.tmp1

# add leading quotes
sed 's/^/\"/' $1.tmp1 > $1.tmp2

# add trailing quotes
sed 's/$/\"/' $1.tmp2 > $1.tmp3

# remove utf characters
sed 's/<feff>//' $1.tmp3 > $1.tmp4

# replace original file with new stripped version and delete .tmp files
cp -rf $1.tmp4 quotes_$1

Ici est propre.sed:

s/\",\"/XXX/g;
:a
s/,//g
ta
s/XXX/\",\"/g;

Puis il supprime les fichiers temporaires et à l'alto, nous avons un nouveau fichier qui commence par le mot "devis" que nous pouvons utiliser pour nos autres processus.

Ma question est:
Pourquoi dois-je faire un sed déclaration de supprimer le feff balise dans le fichier temp? Le fichier d'origine ne l'a pas, mais il apparaît toujours dans le remplacement. Au début, je pensais que le pc était à l'origine de ce mais si j'ai mis dans le sed déclaration à retirer avant le cp, il n'est pas là.

Peut-être que je suis juste en manque de quelque chose...

source d'informationauteur SDGuero