Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/01/2011, 10h18   #1
Membre du Club
 
Inscription : août 2009
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 65
Points : 44
Points : 44
Par défaut While supprime les espaces

Bonjour,

J'ai rencontré un souci avec la commande while. Celle-ci supprime les espaces existants entre les champs d'un enregistrement. Voici un exemple :

Code :
1
2
3
4
cat fic_in | while read line
do
echo $line >> fic_out
done
Quand j'ai le fichier fic composé de trois champs et séparés par 10 espaces :
Code :
1
2
3
4
 
CHAMP1          CHAMP2          CHAMP3
CHAMP1          CHAMP2          CHAMP3
CHAMP1          CHAMP2          CHAMP3
Dans le fichier résultat "fic_out", les champs de mes enregistrements sont séparés par un seul espace. Les 9 autres espaces sont supprimés:
Code :
1
2
3
4
 
CHAMP1 CHAMP2 CHAMP3
CHAMP1 CHAMP2 CHAMP3
CHAMP1 CHAMP2 CHAMP3
J'aimerais que mes 10 espaces soient maintenus dans le fichier de sortie.

Merci pour votre aide.
emmachane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 10h43   #2
Membre du Club
 
Inscription : août 2009
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 65
Points : 44
Points : 44
Par défaut Précision

J'ai oublié de préciser que les enregistrements de mon fichier "fic_in" peuvent avoir un nombre variable de champs.

Code :
1
2
3
 
CHAMP1          CHAMP2          CHAMP3..........CHAMP[n].....
CHAMP1          CHAMP2          CHAMP3..........CHAMP[n].....
L'exemple donné est tout simplement un aperçu.
emmachane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/01/2011, 11h01   #3
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 064
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 064
Points : 4 125
Points : 4 125
Bonjour,

- cat est inutile : while read line; do...; done < fichier
- utilise des guillemets : echo "$line"...
N_BaH est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 06/01/2011, 11h26   #4
Membre du Club
 
Inscription : août 2009
Messages : 65
Détails du profil
Informations forums :
Inscription : août 2009
Messages : 65
Points : 44
Points : 44
Merci, ça marche effectivement.
emmachane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h18.


 
 
 
 
Partenaires

Hébergement Web