OVH Cloud OVH Cloud

awk : lire la sortie d'une commande

7 réponses
Avatar
Philippe Naudin
Bonjour, bonsoir,

J'essaie de faire un script qui lit un fichier crypté, effectue diverses
opérations, puis crypte le résultat. Awk serait parfait pour ça, à un
détail près. Malheureusement, pour la bleusaille que je suis ce détail
parait insurmontable :

Le problème c'est que les "diverses opérations" sont interactives, et
donc utilisent stdin / stdout, ce qui ne me permet pas de faire
ccrypt -c truc | awk machin | ccrypt -e chose

La partie "| ccrypt -e chose" se remplace facilement par
"print | ccrypt -e chose" dans le script awk, pas de problème de ce côté
là.

En revanche je coince pour trouver un substitut à stdin. Mes essais avec
"ccrypt -c truc | getline" me conduisent dans des directions crades
(tout le script dans la clause BEGIN), et je ne veux pas passer par un
fichier temporaire (pas de données non cryptées sur le disque).

Est ce que j'ai loupé quelque chose, ou bien est ce que je ferais mieux
de m'orienter vers perl ou autre ?

Merci pour vos lumières,


--
Philippe Naudin
Cette adresse est valide.
Elle rejette le html, les multipart/(related|alternative), et les
pièces attachées avec une extension (exe|bat|pif|com|scr|zip).

7 réponses

Avatar
Emmanuel Florac
Le Fri, 18 Feb 2005 23:06:42 +0100, Philippe Naudin a écrit :


Est ce que j'ai loupé quelque chose, ou bien est ce que je ferais mieux
de m'orienter vers perl ou autre ?


perl me parait tout indiqué. En plus il est beaucoup plus rapide que awk,
donc on gagne à tous les coups.

--
entia non sont multiplicanda praeter necessitatem.
Guillaume d'Ockham.

Avatar
Rakotomandimby (R12y) Mihamina
( Sat, 19 Feb 2005 00:35:50 +0100 ) Emmanuel Florac :
donc on gagne à tous les coups.


sauf sur un point: la lisibilité.
--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)

Avatar
Bob qui Trolle
Philippe Naudin wrote:

Le problème c'est que les "diverses opérations" sont interactives, et

Merci pour vos lumières,


dialog/cdialog te permettrait éventuellement de créer des dialogues
interactifs pour ton script ?

Avatar
Christophe Blaess
Le problème c'est que les "diverses opérations" sont interactives, et
donc utilisent stdin / stdout, ce qui ne me permet pas de faire
ccrypt -c truc | awk machin | ccrypt -e chose



Si ces "diverses opérations" nécessitent simplement quelques
questions/réponses à l'utilisateur, il est possible de faire
des
print "Une question : " > "/dev/tty"
et
getline reponse < "/dev/tty"
(par exemple dans l'action BEGIN) pour avoir un dialogue
interactif, même dans un pipeline ...|awk machin|...

Ceci ne fonctionnera peut-être pas s'il faut invoquer des
commandes externes. En outre, ça marche avec gawk, mais
n'est peut-être pas portable sur d'autres implémentations.

--
Christophe Blaess
http://www.blaess.fr/christophe/

Avatar
Emmanuel Florac
Le Sat, 19 Feb 2005 02:43:53 +0100, Rakotomandimby (R12y) Mihamina a
écrit :


sauf sur un point: la lisibilité.


C'est une légende qui a la vie dure. Elle est absolument sans fondement;
perl peut être lisible ou illisible, comme le C ou autre chose. Il y a
même des sites qui proposent de l'obfuscated python maintenant.

Alors on est prié de ne pas dire de bétises (surtout que awk, côté
lisibilité c'est vraiment pas terrible, hein).

--
A thing of beauty is a joy forever.
J. Keats.

Ah! Singe débotté, hisse un jouet fort et vert!
Marcel Bénabou.

Avatar
Rakotomandimby (R12y) Mihamina
( Sat, 19 Feb 2005 12:21:28 +0100 ) Emmanuel Florac :

Alors on est prié de ne pas dire de bétises


Ok ok ok ...
--
L'ASPO a pour but de démocratiser l'acces a l'informatique. Une de ses
activité est l'infogerance (http://aspo.rktmb.org/activites/infogerance)
Tél: + 33 2 38 04 26 04 ou + 33 6 33 26 13 14 (France)

Avatar
Philippe Naudin
Le samedi 19 février 2005 à 08:50:40,
Christophe Blaess a écrit:


Le problème c'est que les "diverses opérations" sont interactives,
et donc utilisent stdin / stdout, ce qui ne me permet pas de faire
ccrypt -c truc | awk machin | ccrypt -e chose



Si ces "diverses opérations" nécessitent simplement quelques
questions/réponses à l'utilisateur, il est possible de faire
des
print "Une question : " > "/dev/tty"
et
getline reponse < "/dev/tty"


Bon sang, mais c'est bien sur ...

Ceci ne fonctionnera peut-être pas s'il faut invoquer des
commandes externes. En outre, ça marche avec gawk, mais
n'est peut-être pas portable sur d'autres implémentations.


Je ne surprendrai personne en disant que je n'en suis pas au point de
faire des scripts destinés à être portés sur plein de plate-formes
différentes. Ça résout parfaitement mon problème, en tous cas.

Merci beaucoup, et merci également aux autres contributeurs pour leurs
conseils (je file essayer dialog, que je ne connais pas).


--
Philippe Naudin
Cette adresse est valide.
Elle rejette le html, les multipart/(related|alternative), et les
pièces attachées avec une extension (exe|bat|pif|com|scr|zip).