Le 22/01/2020 à 15:50, guilde.nt@??? a écrit :
> Quoting anne.guilde@???, Wed 22 Jan 2020, 05:37 +0100 CET :
>> Quand le csv vient de mon téléphone, il n'y a pas de catégorie.
>>
>> $37 {print |& s37 ; next}
>> close(s37, "to")
>> while ((s37 |& getline) > 0) print
>>
>> Le script se bloque et attend désespérément
>> Comment gérer dans le awk quand la colonne 37 est à blanc sur toutes les
>> lignes du fichier pour qu'il n'attende pas indéfiniment?
>
> Plus haut, en ne gardant que les lignes d'intérêt : s'il n'y a pas de
> champ 37, on ne passe pas par '$37 {print...}', donc on n'ouvre jamais
> la pipe bi-directionnelle vers le coprocessus s37. Plus tard, on ferme
> la direction "to" de cette pipe avec close(s37, "to"), qui ne provoque
> pas d'erreur, même si elle n'a jamais été ouverte ; ensuite, on essaie
> de lire la sortie du coprocessus avec "s37 |& getline". C'est là qu'on
> bloque, puisqu'elle n'est pas été ouverte. La correction est simple :
>
> $37 {p37=1 ; print |& s37 ; next} # on marque l'ouverture de s37
> !$37 {p1=1 ; print |& s1 ; next} # pareil pour s1
> END {
> if (p37) { <= ligne 79
> close(s37, "to")
> while ((s37 |& getline) > 0) print
> }
>
> if (p1) {
> close(s1, "to")
> while ((s1 |& getline) > 0) print
> }
> }
>
./tri-csv4: ligne 79: erreur de syntaxe près du symbole inattendu « { »
./tri-csv4: ligne 79: ` if (p37) {'
j'ai modifié
if (p37)
{
close(s37, "to") <= ligne 81
while ((s37 |& getline) > 0) print
}
./tri-csv4: ligne 81: erreur de syntaxe près du symbole inattendu « s37, »
./tri-csv4: ligne 81: ` close(s37, "to")'
Là, je ne sais pas comment résoudre.
Je patauge
Anne