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 :

/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 manoeuvre avec la commande 4D LANCER PROCESS EXTERNE :
http://4d.developpez.com/documentation/4DDoc2004/CMF/CMF00811.HTM

Code 4D
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 chiffre 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 4D 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.