IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Comment passer plusieurs commandes UNIX avec LANCER PROCESS EXTERNE

Concaténation de fichiers, recherche et récupération du résultat avec les commandes Unix et LANCER PROCESS EXTERNE. ♪

Article lu   fois.

L'auteur

Site personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Produit : 4D 2004  ·  Plateforme : Mac

Exemple de problématique demandée :

Vous avez plusieurs fichiers texte comportant des numéros écrits dans le format >0123456789<.

Vous voulez effectuer une recherche globale dans tous ces fichiers pour retourner le premier numéro comportant 7 chiffres.

Vous utilisez la ligne de commande Unix suivante qui comporte trois actions :

 
Sélectionnez
1.
/bin/cat tmp/4D_001 tmp/4D_002 tmp/4D_003 | /usr/bin/ruby -ne '$_=~/>([0-9]{7})</; next unless $1; print $1; exit' | /usr/bin/pbcopy
  • Action 1 : cat concatène les fichiers 4D_001, 4D_002, 4D_003
  • Action 2 : ruby (et son script) cherche et retourne le premier nombre de 7 chiffres de 0 à 9
  • Action 3 : pbcopy copie le résultat dans le presse-papiers

Pour effectuer la même manœuvre avec la commande 4D LANCER PROCESS EXTERNE :
https://4d.developpez.com/documentation/4DDoc2004/CMF/CMF00811.HTM

 
Sélectionnez
C_TEXTE(lpe_in;lpe_out;lpe_erreur;lpe_commande)

   `cat tmp/4D_001 tmp/4D_002 tmp/4D_003 : concatène les fichiers 4D_001, 4D_002, 4D_003
$commande_1:="cat Users/stirtiat/tmp/4D_001 Users/stirtiat/tmp/4D_002 Users/stirtiat/tmp/4D_003"
   `script ruby : cherche et retourne le premier nombre de 7 chiffres de 0 à 9
$commande_2:="/usr/bin/ruby -ne '$_=~/>([0-9]{7})</; next unless $1; print $1; exit'"
   `pbcopy : copie le résultat dans le presse-papiers
$commande_3:="/usr/bin/pbcopy"

   `$commande_1 concatène les données des 3 fichiers
   `le résultat est retourné dans lpe_out
LANCER PROCESS EXTERNE($commande_1;lpe_in;lpe_out;lpe_erreur)

   `lpe_out devient le paramètre d'entrée pour $commande_2
   `puisqu'on cherche dans les données concaténées
lpe_in:=lpe_out
LANCER PROCESS EXTERNE($commande_2;lpe_in;lpe_out;lpe_erreur)

   `lpe_out contient maintenant le numéro à 7 chiffres trouvé 
   `et devient le paramètre d'entrée de $commande_3 qu'on va afficher dans le presse-papier
lpe_in:=lpe_out
LANCER PROCESS EXTERNE($commande_3;lpe_in;lpe_out;lpe_erreur)

   `affiche le presse-papier
ALERTE(Lire texte dans presse papiers)
Code simplifié
Sélectionnez
C_TEXTE(lpe_in;lpe_out;lpe_erreur;lpe_commande)

$commande_1:="cat Users/stirtiat/tmp/4D_001 Users/stirtiat/tmp/4D_002 Users/stirtiat/tmp/4D_003"
$commande_2:="/usr/bin/ruby -ne '$_=~/>([0-9]{7})</; next unless $1; print $1; exit'"
$commande_3:="/usr/bin/pbcopy"

LANCER PROCESS EXTERNE($commande_1;lpe_in;lpe_out;lpe_erreur)
LANCER PROCESS EXTERNE($commande_2;lpe_out;lpe_out;lpe_erreur)
LANCER PROCESS EXTERNE($commande_3;lpe_out;lpe_out;lpe_erreur)

ALERTE(Lire texte dans presse papiers)

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2006 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.