#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... Non, mais ça va pas !?
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