Bonjour !
C'est un truc que je pensait résoudre tout seul, mais sur lequel je sèche finalement...
Voila :
J'ai besoin de récupérer des données dans des fichiers issus d'exports d'application.
Les séparateurs d'origine sont soit des ";", soit des tabulations.
En fait, ça pose deux problèmes :
1- Quand le séparateur est ";" je ne parvient pas à faire un cut, car il ne reconnaît pas le séparateur.
J'ai essayé différentes syntaxes : cut -d ";" -f 1,2 mon_fichier.txt ou cut -d ';' -f 1,2 mon_fichier.txt
=> le résultat est :
^;
;
cut: mon_fichier.txt: Illegal byte sequence
J'ai réussi à remplacer les ";" par un autre séparateur (avec sed -e 's/;/:/g' mon_fichier.txt > mon_fichierTest, voilà au moins une commande qui fonctionne !)
Mais lorsque je refais un cut :
cut -d : -f 2,3,5 mon_fichierTest
=> le résultat est :
^::
::
cut: mon_fichier.txt: Illegal byte sequence
Alors que la même commande marche très bien sur le fichier /etc/passwd !
Qu'est-ce qui peut rendre mon fichier si réticent au cut ? Et comment corriger cela ?
2- Quel que soit le séparateur, certain des fichier .txt sur lesquels je travaille sont considérés comme n'ayant qu'une seule ligne (même si cette ligne contient des milliers d'enregistrements).
Un coup de vi sur ces fichiers m'a permis, semble-t-il, d'identifier le problème, mais pas la solution.
En effet, au lieu d'un retour chariot, chaque ligne finit par "^M".
Une solution serait de remplacer ces "^M" par un retour chariot, mais je ne sais pas le faire en script.
De plus, un cat sur le même fichier ne fait apparaître "^M", mais un simple "a".
Je précise que je n'ai pas la possibilité de paramétrer l'export en question (il s'agit principalement de l'export des contacts issus du client mail Entourage sous Mac OS X).
Une ENORME reconnaissance à qui m'aidera à sortir de ce mauvais pas !!!
En attendant de pouvoir, un jour prochain, aider à mon tour...
Partager