Read avec les espaces

Fermé
lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 - 5 mars 2009 à 16:41
dubcek Messages postés 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 - 6 mars 2009 à 09:24
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 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 901
5 mars 2009 à 17:01
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 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99
6 mars 2009 à 08:57
Ces 2 commandes m'affichent un $ à la place de mes espaces mais on y est presque :S

0
jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 901 > lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018
6 mars 2009 à 09:13
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 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99 > jipicy Messages postés 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020
6 mars 2009 à 09:22
oui voila : https://www.cjoint.com/?dijwMkc1Yk
merci bien pour ton aide.

0
lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99
Modifié par Chris 94 le 29/10/2011 à 15:44
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 40805 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 901
5 mars 2009 à 17:17
Merci d'afficher le résultat des commandes demandées ci-dessus !
0
lefoufighter Messages postés 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99
6 mars 2009 à 08:49
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 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
5 mars 2009 à 17:44
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 277 Date d'inscription lundi 20 novembre 2006 Statut Membre Dernière intervention 12 avril 2018 99
6 mars 2009 à 08:45
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 18589 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 21 mars 2023 5 584
Modifié par Chris 94 le 29/10/2011 à 15:45
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