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 27/11/2007, 10h44   #1
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Par défaut Lecture de fichier ligne par ligne avec caractères spéciaux

Bonjour tout le monde,

voila mon problème, je souhaite lire un fichier ligne par ligne de la forme
var1 | var2 | var3 | var4

ca j'y arrive de la manière suivante :

Code :
1
2
3
4
5
6
7
while IFS="|"=: read var1 var2 var3 var4
do
echo "$var1 :\n\
	var2 : $var2\n\
	var3 :\t $var3\n\
	var4 :\t $var4\n\"
done < fichier_lu.txt > resultat.txt
ca marche d'enfer sauf pour les cas ou le texte d'une var contient les carctères suivants : ou J'aimerais donc que les carctères contenus dans les var ne soient pas interprétés, est-ce possible ?
si oui comment ?

Merci d'avance

PS : j'ai également essayé de passer par la commande cat de la manière suivante :
Code :
1
2
3
4
5
6
7
cat fichier_lu.txt | while read var1 var2 var3 var4
do
echo "$var1 :\n\
	var2 : $var2\n\
	var3 :\t $var3\n\
	var4 :\t $var4\n\"
done > resultat.txt
ca fonctionne bien aussi mais il prend comme séparateur l'espace et je sais pas comment lui dire que je veux le pipe comme séparateur ...
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 12h08   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 546
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 546
Points : 7 779
Points : 7 779
peut etre avec ${var1} au lieu de $var1 ?
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2007, 14h16   #3
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
Bien tenté mais fonctionne pas, merci quand même

je me demande si c'est pas interprété avant, à la lecture du fichier
dans le while read ...
Australia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 15h30   #4
Membre du Club
 
Inscription : décembre 2005
Messages : 264
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 264
Points : 46
Points : 46
bon, j'ai contourné le problème en parsant le fichier dans un premier temps pour mettre un backslash avant le égal à l'aide de la commande sed
Australia 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 05h20.


 
 
 
 
Partenaires

Hébergement Web