Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1700 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Lecture d'un fichier formaté

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lecture d'un fichier formaté

n°1589271
Predator23
Posté le 20-07-2007 à 12:18:30  profilanswer
 

Bonjour,
 
je suis devant une impasse, je m'explique, je chercher à convertir un fichier txt formaté d'une certaine manière et à le convertir dans une. Le seul problème que le fichier d'entrée commence par des espaces. et quand je veux récupérer les 5 premiers caractères, ma commande echo $ligne\cut -c1-5 me supprime les espaces en premier. Est-il possible de les garder ?
 
Merci de votre aide
 
Nico

mood
Publicité
Posté le 20-07-2007 à 12:18:30  profilanswer
 

n°1589399
olivthill
Posté le 20-07-2007 à 14:53:11  profilanswer
 

Le problème ne vient pas du echo car si l'on fait echo "  a", cela affiche bien les espaces devant (sur mon ordinateur).
 
Le problème ne vient pas du cut car si l'on fait echo "     abc" |cut -c1-5, on a bien les espaces devant.
 
Le problème est donc en amont.
 
Je devine qu'il s'agit du piège classique

for ligne in `cat fichier1`


La solution consiste a remplacer cette boucle for par

cat fichier1|while read ligne


 
 
 

n°1589407
Predator23
Posté le 20-07-2007 à 15:07:59  profilanswer
 

C'est pourtant ce que j'ai fait :
 
cat $line | while read LIN_IN
do
Dossier=`echo $LIN_IN | cut -c1-5`
done

n°1589526
Predator23
Posté le 20-07-2007 à 16:59:02  profilanswer
 

Cela pose pb meme pour une variable en faisant
toto="  trtze"
echo $toto
trtze

n°1589605
Sve@r
Posté le 20-07-2007 à 21:43:28  profilanswer
 

Predator23 a écrit :

Cela pose pb meme pour une variable en faisant
toto="  trtze"
echo $toto
trtze


echo "[$toto]"
=> [    trtze]
 

Predator23 a écrit :

C'est pourtant ce que j'ai fait :
 
cat $line | while read LIN_IN
do
Dossier=`echo $LIN_IN | cut -c1-5`
done


Dossier=`echo "$LIN_IN" | cut -c1-5`  !!!!!


Message édité par Sve@r le 20-07-2007 à 21:44:42

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1590356
aigles
Posté le 23-07-2007 à 17:06:36  profilanswer
 

Predator23 a écrit :

C'est pourtant ce que j'ai fait :
 
cat $line | while read LIN_IN
do
Dossier=`echo $LIN_IN | cut -c1-5`
done


Ton problème vient en tout premier lieu de ta command read.
Celle-ci supprime les espaces (en fait les caractères de séparation spécifiés dans la variable IFS) en début et en fin de la ligne lue.
Il te faut donc modifier la valeur de IFS le temps de la lecture.
 
De plus, comme l'a indiqué Sve@r, il faut aussi encadrer la substitution de ta variable par des guillemets dans la commande echo,
 
Au final cela donne (en supprimant par la même occasion la commande cat) :
 

while IFS= read LIN_IN
do
   Dossier=`echo "$LIN_IN" | cut -c1-5`
done < $line


 
 
Jean-Pierre.

Message cité 1 fois
Message édité par aigles le 23-07-2007 à 17:07:24
n°1590553
Predator23
Posté le 24-07-2007 à 09:32:09  profilanswer
 

Merci beaucoup, ça marche
 
Nico

n°1592380
Sve@r
Posté le 27-07-2007 à 13:56:07  profilanswer
 

aigles a écrit :

De plus, comme l'a indiqué Sve@r, il faut aussi encadrer la substitution de ta variable par des guillemets dans la commande echo


 
En fait, les guillemets doubles permettent de demander au shell de ne pas faire d'interprétation sur le contenu.
Un exemple tout simple
liste=`ls -l`
echo $liste
echo "$liste"


Message édité par Sve@r le 27-07-2007 à 13:56:25

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  Lecture d'un fichier formaté

 

Sujets relatifs
provoquer l'ouverture d'un fichier ac un .exe[Batch] remplacer des strings dans des noms de fichier
{RESOLU}[BATCH]Renomer fichier .jpg + MultiUploadOuverture fichier type pdf
problème lecture d'un fichier texteJ2EE - Tomcat - Sync apres creation de fichier.
Faire un "cherche et remplace" dans un fichier en Perl ?Paramètre "host" dans fichier configuration.php ?
[résolu] suppression d'une ligne dans un fichier txtLecture en C de fichier de données formaté
Plus de sujets relatifs à : Lecture d'un fichier formaté


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR