Syntaxe awk

johnsteedfr

Membre confirmé
25 Juillet 2006
63
0
Bonjour,

J'ai un script qui utilise awk avec des variables mais je ne trouve pas la bonne syntaxe pour pouvoir le faire fonctionner. Peut être pourrez vous m'aider ?

J'ai une variable qui contient le nom d'un chemin (en fait cette variable est le résultat d'un tri par awk:

arbo_repertoire='/Picture/Repertoire/'

Ensuite, je demande ça:

awk -F"/" '{print $2}' $arbo_repertoire

Sauf que ça ne marche pas. J'obtiens:
cant' open file $arbo_repertoire

Le but étant de faire ça:
nom_repertoire=awk -F "/" '{print $2}' $ arbo_repertoire
Puis d'utiliser
$nom_repertoire

Mais déjà, awk n'arrive pas à lire ma variable $arbo_repertoire...
Quelqu'un a une idée ?

Merci
 
As-tu testé dans Terminal : man awk ?
À vu d'nez, dans le truc que t'as copié manque un espace après le "-F" mais pas dans le truc global (erreur de recopie ?) et dans le truc global, y'a un espace en trop après "$"...
As-tu fait un echo sur ce que tu donnes à awk pour vérifier que ça semble bien valide ?
 
Alors j'ai bien épluché le man awk et comme je bloque, je me retrouve à demander de l'aide sur le forum.

Il y a bien deux erreurs de recopie:

C'est bien:

awk -F"/" '{print $2}' $arbo_repertoire
et non
awk -F"/" '{print $2}' $arbo_repertoire

En fait il y a bien l'espace dans ce que j'avais écrit mais comme il est très étroit, il ne se voit pas. Là j'en ai mis deux.. Bref, il y a bien un espace après -F"/"

Ensuite, c'est bien:

nom_repertoire=awk -F "/" '{print $2}' $arbo_repertoire
et non
nom_repertoire=awk -F "/" '{print $2}' $ arbo_repertoire

C'était bien une erreur de recopie.

Le truc bizarre avec zsh c'est que lorsque j'écris le nom d'une variable au prompt, j'obtiens une réponse du genre:

iMac% $arbo_repertoire
zsh: no such file or directory: /Pictures/Repertoire/
iMac%

Le "no such file or directory" avant le bon résultat ne disparait que lorsque je fais un echo ou un print... Je ne sais pas si ça a un rapport avec mon problème.

Si je fais ce que vous proposez ça donne ça:

iMac% echo awk -F"/" '{print $2}' $arbo_repertoire
awk -F/ {print $2} /Pictures/Repertoire/
iMac%

Ca a l'air de marcher...

Est ce que le fait que $arbo_repertoire soit le résultat d'un autre awk, soit une variable plutôt qu'un fichier ne joue pas sur le problème ? Comme si zsh essayait de lire un fichier plutôt de travailler sur le nom du répertoire. Je sais que zsh est un script objet mais je ne sais pas dans quelle mesure. Il faudrait peut être pouvoir essayer un truc du genre $arbo_repertoire.nom plutôt que $arbo_repertoire... bon c'est juste une idée. Si quelqu'un en sait davantage, merci