Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


Comment passer plusieurs commandes UNIX avec LANCER PROCESS EXTERNE

Date de publication : 28/06/2006

Par Stéphanie Tirtiat (Intl Tech Support)
 

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


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
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é
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)


Valid XHTML 1.1!Valid CSS!

Copyright © 2006 4D s.a.. Aucune reproduction, même partielle, ne peut être faite de ce site et 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.

Contacter le responsable de la rubrique 4D