Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
neverfail frontpage mioche
|
impossible d'écrire dans des fichiers passés en paramètres , Posté le: 11-09-2006 9:25 |
|
|
Bonjour à tous,
j'ai un soucis avec awk.
J'ai écris un programme que je lance en passant 4 fichier en paramètre sur la ligne de commande, et dans mon programme, je n'arrive pas à écrire dans ces fichiers des données que je récupère ds le 1er fichier en paramètre.
Voici un bout de mon code
cat $1 | awk 'BEGIN { FS = ";" ; Nb_lignes = 0 ; }
{ Nb_lignes++; flag_true = -1; flag_bad = 0
if(int($1)!=$1)
{flag_bad = 1; flag_true = 0; print "Erreur IDOPER : Ligne " Nb_lignes > "$fichier_log"}
else { if (flag_true != 0) {flag_true = 1}}
if (flag_bad == 1) {print $0 > "$fichier_err"}
if (flag_true == 1) {print $0 > "$fichier_sortie"}
}'
fichier_log, fichier_err et fichier sont des fichiers que je mets en paramètre qd je lance mon script: tester.awk fichier_entree fichier_sortie, fichier_log fichier_err.
Merci de me filer un coup de main. |
|
|
salemioche salemioche
|
impossible d'écrire dans des fichiers passés en paramètres , Posté le: 11-09-2006 9:43 |
|
|
par quelle magie $fichier_err devrait contenir le nom du fichier ? |
|
|
neverfail frontpage mioche
|
impossible d'écrire dans des fichiers passés en paramètres , Posté le: 11-09-2006 10:18 |
|
|
Tout en haut de mon prog, je fais :
fichier_sortie=$2
fichier_log=$3
fichier_err=$4 |
|
|
salemioche salemioche
|
impossible d'écrire dans des fichiers passés en paramètres , Posté le: 11-09-2006 10:27 |
|
|
il faut faire plutot
export fichier_sortie=$2
et a la place de $fichier_sortie
mettre ENVIRON["fichier_sortie"] |
|
|
neverfail frontpage mioche
|
impossible d'écrire dans des fichiers passés en paramètres , Posté le: 11-09-2006 10:48 |
|
|
J'ai trouvé!!!
En fait tout à la fin, j'ai rajouté $1 $2 $3 $4 et utilisé ARGV:
awk 'BEGIN { FS = ";" ; Nb_lignes = 0 }
{if (FILENAME == ARGV[2]) exit;
Nb_lignes++; flag_true = -1; flag_bad = 0 ;
if(int($1)!=$1)
{flag_bad = 1; flag_true = 0; print "Erreur IDOPER : Ligne " Nb_lignes >> ARGV[3]}
else { if (flag_true != 0) {flag_true = 1}}
if (flag_bad == 1) {print $0 > ARGV[4]}
if (flag_true == 1) {print $0 > ARGV[2]}
}' $1 $2 $3 $4
Merci |
|
|
|