J'essaye de traiter 10 fichiers avec awk
dans mon script, et j'obtiens l'erreur suivante.Erreur lors du traitement de plusieurs fichiers
$ sh skipper.sh file1 filea fileb filec filec fileb filea fileb filec fileb awk: cmd. line:2: (FILENAME=filec FNR=7) fatal: cannot open file `file10' for reading (No such file or directory)
Est-ce que quelqu'un sait comment le réparer? Il fonctionne très bien avec < 10 fichiers mais j'ai besoin de l'utiliser 10 ou 50 fichiers.
Voici mon code
awk -v nfiles="10" 'NR==FNR{a[$0]++;next}
$0 in a {a[$0]++; next}
{b[$0]++}
END{
for(i in a){
if(a[i]==nfiles) {
print i > "output1"
}
else if(a[i]==1) {
print i > "output3"
}
}
for(i in b){
if(b[i]==nfiles-1) {
print i > "output2"
}
}
}' $1 $2 $3 $4 $5 $6 $7 $8 $9 $10
Ce n'est pas un problème awk. C'est un problème de coque. $ 10 est le premier argument avec un 0 après pas un 10ème argument au script. Je suggère d'ajouter une balise pour le shell que vous utilisez. Votre shell peut avoir quelque chose à répéter toute la ligne de commande au lieu d'un seul argument. – bbadour
Vous devriez probablement utiliser '" $ @ "' plutôt que d'énumérer tous les paramètres de position '$ 1 $ 2 ...'. – Cascabel