Read avec les espaces

lefoufighter Messages postés 278 Statut Membre -  
dubcek Messages postés 18786 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour tout le monde,

je devrais écrire un script qui recopie ligne par ligne un fichier pour le mettre dans un nouveau fichier.
Ne me dites pas qu'il y a un moyen plus simple j'ai juste du simplifier pour poser ma question...
Mon problème c'est qu'il copie bien ligne par ligne de mon fichier source vers le fichier de destination mais il me supprime les espaces de fin de lignes alors qu'il ne devrait absolument pas !

Voici mon code :

if [ "$#" -ge 1 ]
then
     cat $1 | while read Ligne
     do
            echo $Ligne >> resGRA.txt
     done
else
	echo "Please give a file !"
fi


Merci d'avance pour votre aide. :)

5 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

On peut avoir un aperçu du fichier d'entrée :
cat -A fichier
ou
sed -n l fichier
PS. C'est un ELLE minuscule et pas un UN !
0
lefoufighter Messages postés 278 Statut Membre 99
 
Ces 2 commandes m'affichent un $ à la place de mes espaces mais on y est presque :S

0
jipicy Messages postés 41342 Statut Modérateur 4 896 > lefoufighter Messages postés 278 Statut Membre
 
Colle ton fichier sur Cjoint si c'est possible bien sûr... Il nous faut tous les éléments pour pouvoir t'aider à résoudre ton problème et non pas de l'approximatif ;-\
0
lefoufighter Messages postés 278 Statut Membre 99 > jipicy Messages postés 41342 Statut Modérateur
 
oui voila : https://www.cjoint.com/?dijwMkc1Yk
merci bien pour ton aide.

0
lefoufighter Messages postés 278 Statut Membre 99
 
le fichier ressemble à ca :

:20:JGO001          
:21R:TEST-SNC08-01 
:50H:/BE729xxx00004316               
:52A:CWxxxxBBXXX 
:30:080610 
:32B:EUR000000000100,00 
:57A:GKCCBEBBXXX 
:59:/BE0xxxxxx1580822               
J.... G....                
                                    
:70:VIREMENT TEST JGO 08                 
                                    
:71A:SHA 
:19A:00001                     
:19:00000000000100,00 


mais on le voit pas ici mais a la fin de certains champs il y a 10 espaces et dans la copie il devrait les garder c'est là mon problème...


Il n'existe que deux choses infinies, l'univers et la bêtise humaine...
mais pour l'univers, je n'ai pas de certitude absolue. <Albert Einstein>
0
jipicy Messages postés 41342 Statut Modérateur 4 896
 
Merci d'afficher le résultat des commandes demandées ci-dessus !
0
lefoufighter Messages postés 278 Statut Membre 99
 
Mais le résultat n'est pas visible en fait, à partir du fichier que je vous ai envoyé, il doit le reproduire en gardant les espaces en fin de ligne dans un nouveau fichier.
PS : il y a d'autres manières je le sais bien mais il faut que je le fasse comme ca.

0
dubcek Messages postés 18786 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
hello
j'essayerais avec
x=$IFS
   cat $1 | while IFS="" read Ligne
     do
            echo $Ligne >> resGRA.txt
     done
IFS=$x

je ne suis pas sûr que le x=$IFS soit utile
0
lefoufighter Messages postés 278 Statut Membre 99
 
J'ai essayé avec ta commande mais ca ne change rien il ne copie toujours pas les espaces en fin de ligne :(

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dubcek Messages postés 18786 Date d'inscription   Statut Contributeur Dernière intervention   5 641
 
avec awk
awk 'BEGIN {FS=OFS=""} ; {print $0,"xxx"}'
le "xxx" c'est juste pour voir qu'il s'ajoute après les blancs

>awk -f f1.awk < f1.txt 
:20:JGO001         xxx 
:21R:TEST-SCN08-01xxx 
:50H:/BE7xxxx000004316              xxx 
:52A:CWCxxxxBBXXXxxx 
:30:080610xxx 
:32B:EUR000000000100,00xxx 
:57A:GKxxxxxBXXXxxx 
:59:/BE0xxxxxx1580822              xxx 
J..... G.....               xxx 
                                   xxx 
:70:VIREMENT TEST JGO 08                xxx 
                                   xxx 
:71A:SHAxxx 
:19A:00001                    xxx 
:19:00000000000100,00xxx 
0