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 08/08/2011, 16h08   #1
 
Inscription : mai 2002
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 3
Points : -3
Points : -3
Par défaut Lecture écriture fichier avec awk

Bonjour,

J’écris un script qui lit un fichier texte contenant 10 colonnes avec séparateur ;
Code :
awk ${FICHIER_ENTREE} '{print FS=";" num=$1, nom=$2, type=$3}'>${FICHIER_SORTIE}.txt
Lorsque je l'exécute, en ligne de commande ou via le script, ça ne fonctionne pas.
J'ai l'erreur suivante :
Code :
1
2
3
 Syntax Error The source line is 1.
awk: 0602-533 Cannot find or open file {print FS=";" num=$1, nom=$2, type=$3}.
 The source line number is 1.
J'ai l'impression qu'il ne voit pas le fichier source.

Quelqu'un peut-il m'aider ?

Merci d'avance.
Deep
deeper est déconnecté   Envoyer un message privé Réponse avec citation 03
Vieux 08/08/2011, 16h21   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
As-tu seulement pris quelques instants pour lire la documentation ?

Allez, va faire un tour sur la page man de awk !

parce que là c'est un peu comme essayer de couper du bois avec la poignée de la scie
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/08/2011, 16h24   #3
 
Inscription : mai 2002
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 3
Points : -3
Points : -3
Comprends pas l'allusion à la scie.
Par contre, j'ai lu le man awk, et je ne trouve pas de réponse à ma question
deeper est déconnecté   Envoyer un message privé Réponse avec citation 02
Vieux 08/08/2011, 16h30   #4
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 070
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 070
Points : 4 153
Points : 4 153
donc, tu as vu ça :
Citation:
gawk [ options de style POSIX ou GNU ] [ -- ] texte-programme fichier
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 08/08/2011, 20h41   #5
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 934
Points : 4 934
Citation:
Envoyé par deeper Voir le message
Bonjour,

J’écris un script qui lit un fichier texte contenant 10 colonnes avec séparateur ;
Code :
awk ${FICHIER_ENTREE} '{print FS=";" num=$1, nom=$2, type=$3}'>${FICHIER_SORTIE}.txt
Salut
La dernière réponse de N_Bah résoudra 99% de ton problème.
Moi, ce qui me chagrine, c'est ce print FS=";" .... En voyant ça, j'hésite entre la question "mais pourquoi veux-tu afficher FS=; ???" et la question "n'as tu donc pas réalisé que FS=... est une instruction et qu'on ne la met donc pas derrière un print car sinon le moteur d'analyse ne pipera plus rien ???"

Ensuite, c'est un avis perso, moi je préfère utiliser l'option -F de awk plutôt que mettre le FS dans le code. Mais ça, c'est chacun fait comme il le sent...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/08/2011, 08h50   #6
 
Inscription : mai 2002
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 3
Points : -3
Points : -3
Du coup, comme tu ne m'a pas trop aidé, j'ai cherché, et du coup j'ai compris ce que tu voulais dire.
Voila ce que ça donne
Code :
awk 'BEGIN {FS=";"; OFS=":" } { print num=$1, nom=$2, type=$3}' ${FICHIER_ENTREE} >${FICHIER_SORTIE}
Merci pour ton aide N_BaH
Merci également à Sve@r pour tes éclaircissements.

Du coup, je peux continuer à avancer sur mon script qui est loin d'être fini...
deeper est déconnecté   Envoyer un message privé Réponse avec citation 11
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h59.


 
 
 
 
Partenaires

Hébergement Web