Bonjour,
J'aimerais écrire un script qui supprime le premier et le dernier caractère, qui sont tous les deux des guillemets doubles ("), de chaque ligne d'un fichier texte. Est-ce que quelqu'un pourrait me donner un piste (sed?) ?
Merci d'avance.
# Il doit y avoir plus court, mais un truc dans ce genre....
Posté par aurel (site web personnel, Mastodon) . Évalué à 2.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par GCN (site web personnel) . Évalué à 2.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
Merci.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par GCN (site web personnel) . Évalué à 2.
Peut-on avoir un extrait du fichier que tu cherches à traiter (en remplaçant éventuellement toute info confidentielle) ?
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
Merci bien.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
"Borkowski,Agnès,C.M.P.,Ressources humaines,2 rue du Doyen J. Parisot,Vandoeuvre-les-Nancy,xxxxxx,,xxxxxx@xxxxx,http://www.cmp.u-nancy.fr"
"Boulier,Marie-Hélène,C.M.P.,Vacataire,33 place Galland,Verdun,55100,xxxxxx,xxxxxxx,,xxxxxx@cmp.u-nancy.fr,http://www.cmp.u-nancy.fr"
"Bourgeois,Dominique,C.M.P.,Direction,2 rue du Doyen J. Parisot,Vandoeuvre-les-Nancy,54500,xxxxxx,xxxxxx,,xxxxxx@cmp.u-nancy.fr,http://www.cmp.u-nancy.fr"
Je ne vois ce qu'il a de spécial, à part qu'à l'origine c'est un fichier .csv ( format des carnets d'adresses importables sous Outlook).
Si quelqu'un avait une idée...
Merci.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par GCN (site web personnel) . Évalué à 2.
Va lire ceci => http://en.wikipedia.org/wiki/CRLF
Pour faire bref, je te conseille de:
1a) Tu utilises dos2unix[1] sur ton fichier
1b) Alternativement, tu ouvres ton fichier avec vim, tu tapes ":set ff=dos" et tu sauvegardes
2) Tu exécutes la commande sed indiquée plus haut
3a) Tu utilises unix2dos[2] sur ton fichier
3b) Alternativement, tu ouvres ton fichier avec vim, tu tapes ":set ff=unix" et tu sauvegardes
Voilà, c'est prêt....
[1] - http://linuxcommand.org/man_pages/dos2unix1.html
[2] - http://linuxcommand.org/man_pages/unix2dos1.html
Bon sinon tu as toujours moyen de légèrement modifier le sed ci-dessus comme ceci:
$ sed 's/^"\(.*\)"\r$/\1/' fichier
Ça fait la même chose et c'est plus rapide :).
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par kalamteeji . Évalué à 1.
[^] # Re: Il doit y avoir plus court, mais un truc dans ce genre....
Posté par GCN (site web personnel) . Évalué à 2.
Si ces manips ne fonctionnent pas chez toi c'est que ton fichier n'est pas tel que tu le crois (je n'vois pas pourquoi ça marcherait sur ma machine et pas ailleurs :).
Bon courage...
# En perl
Posté par peck (site web personnel) . Évalué à 2.
Ca marche comme un filtre, pour l'uiliser inline dans un fichier ajouter l'option -i
Expression régulière a modifier en fonction de tes besoins (le premier caractere est-il forcément un ", que faire des ligens vides ...)
[^] # Re: En perl
Posté par kalamteeji . Évalué à 1.
perl -pe -i filename 's/^"(.*)"$/$1/'
C'est bien ça?
Merci.
[^] # Re: En perl
Posté par peck (site web personnel) . Évalué à 2.
perl -i -pe 's/^"(.*)"$/$1/' filename
L'expression doit etre apres le -e
S'il y a quelque chose apres le -i ca doit etre une extension de sauvegarde pour le fichier. S'il n'y a rien il n'y a pas de copie de sauvegarde.
[^] # Re: En perl
Posté par Boris . Évalué à 1.
[^] # Re: En perl
Posté par GCN (site web personnel) . Évalué à 2.
Les regexps c'est bon, mangez-en ! (et, finalement, avec un peu de pratique c'est vraiment pas si compliqué).
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.