|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Expert Confirmé
![]() Inscription : mars 2004 Messages : 3 109 ![]() |
Bonjour,
Je dispose un répertoire A sous Unix partagé sous Windows via Samba L'application sous Windows génère un fichier de plusieurs de centaines de lignes au format texte windows (soit une fin de ligne CRLF) De l'autre coté, j'ai une application sous unix qui récupère le fichier texte et le lit Sauf que pour Unix, seul LF est interprété comme fin de ligne, donc je me retrouve avec les fameux caractères ^M Je cherche comment faire en ce sorte que ces fins de ligne se mettent automatiquement en LF lors du transfert sur le partage réseau ... PS : je n'ai pas le choix de cette architecture, imposée par le projet
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP The UNIX way of sex: gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep Je ne réponds ni aux messages privées, ni aux messages plein de fautes... |
|
|
00
|
|
|
#2 |
|
Invité de passage
![]() Inscription : août 2007 Messages : 1 ![]() |
J'ai eu le même problème pour supprimer les contrôles M. J'ai fait une grouille de script utilisant awk et tr (entre autre) qui me repère les fichiers contenant des ^M (\r code hexa \x0D) et qui me les liste. il suffit par la suite de les passer un à un dans un autre scripts qui les supprime et de mettre tout ça dans un cron
repérer les fichier contenant des ^M : trouve.ksh : read REP?"Entrez la racine de recherche :" for file in $(find $REP -type f 2>/dev/null) do awk '/\r/ {print}' "$file" > /tmp/toto 2>/dev/null if [ test $(cat /tmp/toto | wc -l) -gt 0 ] then echo "$file" fi done transformer le retour chariot en rien, deux solutions : - a la main quand il y a peu de fichier : vi fic :%s/.$//g - dans une moulinette : remplace.ksh : trouve.ksh > to_replace && cat to_replace | while read file do mv $file /tmp/$file.orig cat /tmp/$file.orig | tr -d "\r" > $file done que l'on peut mettre dans un cron. Il est également possible de voir les retours chariots en faisant : cat <fichier> | od -bc Un grep peut aussi arranger les choses dans ce cas pour les repérer. Mise dans un cron toutes les minutes par exemple : */1 * * * * remplace.ksh 2>&1 > /dev/null Aux ajustations syntaxique près ça devrait fonctionner http://www.developpez.net/forums/ima...s/icon_bug.gif |
|
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : février 2005 Messages : 68 ![]() |
tu fait un sed sur tes fichiers :
s/^M//g, on fait comme cela chez nous. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com