Avatar de l’utilisateur
Viky
Castro District ⛧
UNIX/Bash sed
Bijour,

D'habitude quand je veux downloader des donnees dans excel, j'utilise une fonction genre

code : Tout sélectionner

{
   scp  data.txt
   sed s/$(echo -e "\001")/","/g data.txt > data_cleaned.csv
   rm data.txt

}
Le probleme arrive quand j'ai des caracteres speciaux (genre thailandais ou chinois).

Pour le moment je recupere le data.txt, sauvegarde en UTF-16 (ou 8) et importe dans excel. Sauf que c'est chiant.
Il y a moyen de rajouter une option genre charset=UTF-16 dans sed ? Si oui, comment ?

Merci.
Avatar de l’utilisateur
Conrad
Free Van de Kamp ☣✓
Re: UNIX/Bash sed
Installe FreeBSD.
Le véritable asile, un site de pères de familles qui votent moins à droite qu'hohun.
Avatar de l’utilisateur
Cossu
Petit chanteur de la croix de fer
Re: UNIX/Bash sed
http://linux.die.net/man/1/iconv en étape intermédiaire ?
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Yes je vais essayer. Merci.
Et maintenant pour une raison que j'ignore Hive refuse de faire tourner mes queries.....
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Bon et bien avec

function get_hdfs_bis {
scp blabla@blabla/* raw_data.txt
iconv -f UTF-8 -t UTF-16 raw_data.txt > raw_data2.txt
sed s/$(echo -e "\001")/","/g raw_data2.txt > raw_data_cleaned2.csv

rm raw_data.txt
}

Je me tape une erreur
sed: RE error: illegal byte sequence
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Et ils sont ou rain et plume quand on a besoin d'eux ?!

En plus c'est super interessant (hum)
Avatar de l’utilisateur
Plume
L'effaceur
Re: UNIX/Bash sed
Lapin,

Que donne:
echo $LANG
su-per
Avatar de l’utilisateur
Conrad
Free Van de Kamp ☣✓
Re: UNIX/Bash sed
Image
Le véritable asile, un site de pères de familles qui votent moins à droite qu'hohun.
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Plume a écrit :Lapin,

Que donne:
echo $LANG
en_GB.UTF-8
Avatar de l’utilisateur
Plume
L'effaceur
Re: UNIX/Bash sed
Okay, c'est la locale que va utiliser sed. Tu remarqueras qu'il s'attend à avoir une entrée en utf8.
Donc quand tu lui files de utf16 il est vénère.


Et je ne suis même pas certain qu'il gère bien l'utf8, c'est à dire que quand tu lui dis de remplacer \001, peut être que dans ton implémentation de sed il va bosser byte par byte au lieu de considérer caractère par caractère (qui peuvent parfois s'exprimer sur plusieurs bytes en utf8 dès qu'il s'agit de caractères accentués par exemple).

Et ainsi remplacer un byte qui a en effet la valeur \001 mais qui ne correspond pas au caractère début de chapitre. En réalité ce byte pourrait composer un autre caractère compliqué qui est représenté par plusieurs bytes.


Bref, travaille toujours en utf8, puis après (re)converti vers utf16 ou garde en utf8 selon ce que tu attends.
Si ça merde, oublie sed et regarde du côté de perl genre:

code : Tout sélectionner

perl -pe 's/\001/,/g'
su-per
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Merci mon bon dauphin.

J'obtiens le meme resultat en passant par perl ou en placant LANG=en_GB.UTF-16.
Maintenant c'est Excel qui me les casse. Dans la preview je vois que la .csv est correcte et propre, mais quand je l'ouvre ca met 1 minute, et c'est plein de caracteres speciaux sur 5 lignes.
Google time.
Avatar de l’utilisateur
Conrad
Free Van de Kamp ☣✓
Re: UNIX/Bash sed
Ah Excel et le csv, toute une histoire.

Exemple : http://stackoverflow.com/questions/6002 ... omatically
Le véritable asile, un site de pères de familles qui votent moins à droite qu'hohun.
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Je lisais justement ce lien. Bordel.
Bon et bien je crois que je vais rester au coup du je l'export en .txt en utf-16 et je re-importe dans excel ensuite.

Merci
Avatar de l’utilisateur
Plume
L'effaceur
Re: UNIX/Bash sed
Viky a écrit :Merci mon bon dauphin.

J'obtiens le meme resultat en passant par perl ou en placant LANG=en_GB.UTF-16.
Maintenant c'est Excel qui me les casse. Dans la preview je vois que la .csv est correcte et propre, mais quand je l'ouvre ca met 1 minute, et c'est plein de caracteres speciaux sur 5 lignes.
Google time.
Mais en travaillant en utf8 ça donne quoi ?

code : Tout sélectionner

function get_hdfs_bis {
   scp blabla@blabla/* raw_data.txt

   perl -pe "s/\N{U+001}/,/g" raw_data.txt | iconv -t UTF-16 > data.csv

   rm raw_data.txt
}
su-per
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Merci, mais ca donne ca:

Image

Je crois que c'est excel qui n'aime pas les .csv
Avatar de l’utilisateur
Plume
L'effaceur
Re: UNIX/Bash sed
Quelle merdasse excel: http://blog.plataformatec.com.br/2009/0 ... rails-app/

code : Tout sélectionner

function get_hdfs_bis {
   scp blabla@blabla/* raw_data.txt

   # UTF-16LE Bom
   printf "\xff\xfe" > data.csv

   # Converted to UTF-16LE data
   perl -pe "s/\N{U+001}/\t/g" raw_data.txt | iconv -t UTF-16LE >> data.csv

   rm raw_data.txt
}
su-per
Avatar de l’utilisateur
Viky
Castro District ⛧
Re: UNIX/Bash sed
Il y a des gens qui utilisent Presto ici ?