Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 27/09/2020, à 15:54

philoeil

[RESOLU] sur AWK redirection d'un resultat dans un fichier

Bonjour,

Je bloque sur redirection d'un resultat dans un fichier depuis une commande AWK :

Fichier Exemple :

phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ cat adresses.csv 
gwenael | 0298452223 | 0638431234 | 50  
marcel | 0466442312 | 0638453211 | 31  
judith | 0154674487 | 0645227937 | 23
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ 

Le script qui marche (sans redirection)

#! /bin/bash
BEGIN {
   print "Debut :";
#print "Essai" > TmpFichier;
}
{
  #   print $0 > TmpFichier;
 #  print "une ligne" > TmpFichier;
print $0;
   print "une ligne";
}
END {print " Fin"; 
   close(TmpFichier);
   }

Resultat :

phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ awk -f ./TRedir.awk adresses.csv 
Debut :
gwenael | 0298452223 | 0638431234 | 50  
une ligne
marcel | 0466442312 | 0638453211 | 31  
une ligne
judith | 0154674487 | 0645227937 | 23
une ligne
 Fin
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ 

Le script qui échoue par la présence de redirections

#! /bin/bash
BEGIN {
   print "Debut :";
print "Essai" > TmpFichier;
}
{
  #   print $0 > TmpFichier;
 #  print "une ligne" > TmpFichier;
print $0;
   print "une ligne";
}
END {print " Fin"; 
   close(TmpFichier);
   }

Le message d'erreur

phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ awk -f ./TRedir.awk adresses.csv 
Debut :
awk: ./TRedir.awk:4: fatal : l'expression dans la redirection « > » donne une chaîne nulle
phil@phil-G750JH:~/Documents/JeCodeShell/TestAWK$ 

Merci pour votre aide


Solution : tout simplement mettre des ""

#! /bin/bash
BEGIN {
   print "Debut :";
print "Essai" > "TmpFichier";
}
{
     print $0 > "TmpFichier";
   print "une ligne" > "TmpFichier";
print $0;
   print "une ligne";
}
END {print " Fin"; 
   close(TmpFichier);
   }

Dernière modification par philoeil (Le 27/09/2020, à 16:07)

Hors ligne

#2 Le 27/09/2020, à 16:52

Watael

Re : [RESOLU] sur AWK redirection d'un resultat dans un fichier

salut,

au début, j'ai cru que TmpFichier était une variable, mais non définie.
"TmpFichier" signifie qu'il va y avoir un fichier TmpFichier dans le répertoire courant (./, là d'où est exécuté le script).

Attention! tu ne fermes pas le fichier, puisqu'il n'y a pas de guillemets (le close() considérera TmpFichier comme une variable) !

et, mettre un shebang bash dans un script awk... hmm Non, mais ça va pas !? smile


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 29/09/2020, à 21:14

philoeil

Re : [RESOLU] sur AWK redirection d'un resultat dans un fichier

Bonjour,

Et merci bien Watael pour tes aides et précisions

Hors ligne