[R] [..] Equivalent de GREP, SED, CUT, etc
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] [..] Equivalent de GREP, SED, CUT, etc
Bonjour à tous,
Je fais mes premiers pas sur Autoit et suis habitué au shell Unix/Linux. Je suis à la recherche de correspondances pour des utilitaires tels que GREP, SED, CUT, etc ou tout utilitaire Unix/Linux.
Merci par avance pour votre aide.
Je fais mes premiers pas sur Autoit et suis habitué au shell Unix/Linux. Je suis à la recherche de correspondances pour des utilitaires tels que GREP, SED, CUT, etc ou tout utilitaire Unix/Linux.
Merci par avance pour votre aide.
Modifié en dernier par tibal le sam. 18 sept. 2010 14:22, modifié 1 fois.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
Bonjour tibal.
AutoIt est un utilitaire qui fonctionne sous Windows.
Ce qui fait que les commandes Unix dont vous parlez ne sont pas forcément connues par les membres de ce forum.
Il serait donc plus judicieux que vous donniez le maximum d'informations sur ces commandes (liens ou descriptions) afin d'éviter à celui qui veut vous aider, de perdre du temps en recherches.
Les commandes Unix étant très puissantes, vous ne trouverez sans doute pas l'exacte équivalence en AutoIt, mais quelques lignes de code bien argumentées feront très largement l'affaire.
Donnez nous des exemples concrets de ce que vous cherchez à faire, afin d'éviter une multitude de messages inutiles en demande d'explications divers et variées.
AutoIt est un utilitaire qui fonctionne sous Windows.
Ce qui fait que les commandes Unix dont vous parlez ne sont pas forcément connues par les membres de ce forum.
Il serait donc plus judicieux que vous donniez le maximum d'informations sur ces commandes (liens ou descriptions) afin d'éviter à celui qui veut vous aider, de perdre du temps en recherches.
Les commandes Unix étant très puissantes, vous ne trouverez sans doute pas l'exacte équivalence en AutoIt, mais quelques lignes de code bien argumentées feront très largement l'affaire.
Donnez nous des exemples concrets de ce que vous cherchez à faire, afin d'éviter une multitude de messages inutiles en demande d'explications divers et variées.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- sylvanie
- Niveau 11

- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
Bonjour,
pour apporter un début de réponse
sed : cf stringreplace et surtout stringregexpreplace
cut : stringsplit
pour grep, il faudra coder une fonction à base de findfilefirstfile et findfilenextfile pour le parcours, puis filread/filereadline et enfin stringinstr ou (surtout) stringregexp. Mais à mon avis les perfs vont s'écrouler (en utilitaire autre que Autoit sous windows je préconiserai Textcrawler)
Bonne continuation
pour apporter un début de réponse
sed : cf stringreplace et surtout stringregexpreplace
cut : stringsplit
pour grep, il faudra coder une fonction à base de findfilefirstfile et findfilenextfile pour le parcours, puis filread/filereadline et enfin stringinstr ou (surtout) stringregexp. Mais à mon avis les perfs vont s'écrouler (en utilitaire autre que Autoit sous windows je préconiserai Textcrawler)
Bonne continuation
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Re: [..] Equivalent de GREP, SED, CUT, etc
Bonsoir et merci à Tlem et Sylvanie.
En fait, je souhaite faire deux boucles WHILE imbriquée, chacune parsant un fichier et pour chaque ligne extraite, je souhaite récuoérer le champs particulier. J'ai commencé à coder ça, mais ne suis pas sûre que le code soit optimale, et par ailleurs, la boucle interne devrait être exécutée autant de fois que la boucle externe a de lignes. Le problème est qu'elle ne s'exécute qu'une fois et que seule la boucle externe parse toutes les lignes de mon fichier. J'ai passé ma boucle interne par une fonction mais ça n'y change rien.
Je vous poste mon code, ça sera plus parlant :
En fait, je souhaite faire deux boucles WHILE imbriquée, chacune parsant un fichier et pour chaque ligne extraite, je souhaite récuoérer le champs particulier. J'ai commencé à coder ça, mais ne suis pas sûre que le code soit optimale, et par ailleurs, la boucle interne devrait être exécutée autant de fois que la boucle externe a de lignes. Le problème est qu'elle ne s'exécute qu'une fois et que seule la boucle externe parse toutes les lignes de mon fichier. J'ai passé ma boucle interne par une fonction mais ça n'y change rien.
Je vous poste mon code, ça sera plus parlant :
Code : Tout sélectionner
#include <String.au3>
#include <Array.au3>
#include <file.au3>
If ( $CmdLine[0] <> 0 ) Then
MsgBox(0,"Argument","Argument present")
Else
MsgBox(0,"Argument","Argument manquant. Sortie du script")
Exit
EndIf
Dim $VERSION = $CmdLine[1]
Dim $REP_RACINE = "C:\SCRIPT\AUTOIT"
Dim $SERVER_LIST = $REP_RACINE & "\server_list.list"
Dim $CONCESSION_LIST = $REP_RACINE & "\concession.list"
Dim $REP_DEST = $REP_RACINE
Dim $PATCH = $REP_RACINE & "\SOURCE\" & $VERSION & ".zip"
Dim $SERVER_LIST_LINE
Dim $CONCESSION_LIST_LINE
Dim $NB_SERVERS
Dim $COUNT_SERVER
Dim $NB_CONCESSIONS = 0
Global $COUNT_CONCESSIONS = 0
$SERVER_LIST_FILE = FileOpen($SERVER_LIST,0)
$CONCESSION_LIST_FILE = FileOpen($CONCESSION_LIST,0)
$NB_SERVERS = _FileCountLines($SERVER_LIST)
$NB_CONCESSIONS = _FileCountLines($CONCESSION_LIST)
MsgBox(0,"Nb Serveurs",$NB_SERVERS)
MsgBox(0,"Nb Concessions",$NB_CONCESSIONS)
If $SERVER_LIST_FILE = -1 Then
MsgBox(0,"Ouverture de Fichier","Erreur lors de l'ouverture du fichier : " & @CRLF & $SERVER_LIST_FILE)
Exit
EndIf
If $CONCESSION_LIST_FILE = -1 Then
MsgBox(0,"Ouverture de Fichier","Erreur lors de l'ouverture du fichier : " & @CRLF & $CONCESSION_LIST_FILE)
Exit
EndIf
While $COUNT_SERVER < $NB_SERVERS
$SERVER_LIST_LINE = FileReadLine($SERVER_LIST_FILE)
If @error = -1 Then ExitLoop
If StringInStr($SERVER_LIST_LINE,"PROD") Then
$SERVER = _StringBetween($SERVER_LIST_LINE,"PROD ","")
MsgBox(0,"Variable LINE",$SERVER[0])
$COUNT_CONCESSIONS = 0
MsgBox(0,"$COUNT_CONCESSIONS avant _FCT_CONCESSION",$COUNT_CONCESSIONS )
_FCT_CONCESSION()
MsgBox(0,"$COUNT_CONCESSIONS apres _FCT_CONCESSION",$COUNT_CONCESSIONS )
EndIf
$COUNT_SERVER = $COUNT_SERVER + 1
WEnd
Func _FCT_CONCESSION()
While $COUNT_CONCESSIONS < $NB_CONCESSIONS
$CONCESSION_LIST_LINE = FileReadLine($CONCESSION_LIST_FILE)
If @error = -1 Then ExitLoop
If StringInStr($CONCESSION_LIST_LINE,"FRF") Then
$CONCESSION = $CONCESSION_LIST_LINE
MsgBox(0,"Concession","Serveur : " & $SERVER[0] & @CRLF & "Concession : " & $CONCESSION)
EndIf
$COUNT_CONCESSIONS = $COUNT_CONCESSIONS + 1
WEnd
EndFunc
FileClose($SERVER_LIST_FILE)
FileClose($CONCESSION_LIST_FILE)
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
Ce code est totalement abstrait pour ceux qui ne connaissent pas les fichiers traités et le résultat attendu.
Dites nous ce que vous avez, et ce que vous voulez.
Ensuite, en ce qui concerne le code, la logique voudrait que le test d'ouverture du fichier soit fait après le FileOpen et qu'en cas d'erreur le script s'arrête (inutile de faire des choses qui n'aboutiront pas ...).
Ensuite, d'après la première boucle, vous cherchez à faire un traitement sur des lignes contenant l'expression "PROD ".
Il serait peut être judicieux de lire le fichier rapidement à la recherche de ces lignes, en les plaçant dans un tableau afin de les traiter dans l'autre boucle, mais cela dépend de ce que vous cherchez à faire.
Dites nous ce que vous avez, et ce que vous voulez.
Ensuite, en ce qui concerne le code, la logique voudrait que le test d'ouverture du fichier soit fait après le FileOpen et qu'en cas d'erreur le script s'arrête (inutile de faire des choses qui n'aboutiront pas ...).
Ensuite, d'après la première boucle, vous cherchez à faire un traitement sur des lignes contenant l'expression "PROD ".
Il serait peut être judicieux de lire le fichier rapidement à la recherche de ces lignes, en les plaçant dans un tableau afin de les traiter dans l'autre boucle, mais cela dépend de ce que vous cherchez à faire.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Equivalent de GREP, SED, CUT, etc
En effet Tlem, j'ai oublié de vous fournir les fichiers parsés. En le contenu :
Fichier server_list.list :
Fichier concession.list :
En fait, je dois boucler sur chaque second champs des lignes du fichier server_list.list où le premier champs correspond à PROD. Ensuite, pour chaque itération de la boucle précédente, je dois boucler sur chaque ligne du fichier concession.list. Ensuite, pour chaque itération de la boucle interne, je dois faire un NET USE sur chaque serveur et décompresser un fichier dans chaque répertoire correspondant à la liste des concessions, via UNZIP.
Fichier server_list.list :
Code : Tout sélectionner
PROD SERVER7
TEST SERVER8
PROD SERVER9
PROD SERVER10
PROD SERVER11
PROD SERVER12
PROD SERVER13Code : Tout sélectionner
CONCESSIONBE01
CONCESSIONFR01
CONCESSIONFR13
CONCESSIONFR18
CONCESSIONFR20
CONCESSIONFR21
CONCESSIONFR27
CONCESSIONFR28
CONCESSIONFR31
CONCESSIONFR33
CONCESSIONFR37
CONCESSIONFR44
CONCESSIONFR45
CONCESSIONFR51
CONCESSIONFR53
CONCESSIONFR57
CONCESSIONFR59
CONCESSIONFR67
CONCESSIONFR69
CONCESSIONFR72
CONCESSIONFR73
CONCESSIONFR74
CONCESSIONFR77
CONCESSIONFR78
CONCESSIONFR782
CONCESSIONFR80
CONCESSIONFR84
CONCESSIONFR91
CONCESSIONFR92
CONCESSIONFR94
CONCESSIONFR95
CONCESSIONFRF01
CONCESSIONFRF02
CONCESSIONFRP01
CONCESSIONFRP02- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
Avec AutoIt, il est possible de prendre les choses de différentes manières.
En ce qui me concerne, je lirais le fichier server_list.list ligne par ligne à la recherche du terme PROD et je construirais un tableau simple de ce genreEnsuite je mettrais concession.list directement en tableau, avec la commande appropriée. 
Ce qui nous donne donc deux tableaux ...
Après, rien de plus simple que de faire deux boucles FOR imbriquées pour effectuer les commandes nécessaires.
En ce qui me concerne, je lirais le fichier server_list.list ligne par ligne à la recherche du terme PROD et je construirais un tableau simple de ce genre
Code : Tout sélectionner
SERVER7
SERVER9
SERVER10
SERVER11
SERVER12
SERVER13Ce qui nous donne donc deux tableaux ...
Après, rien de plus simple que de faire deux boucles FOR imbriquées pour effectuer les commandes nécessaires.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Equivalent de GREP, SED, CUT, etc
Merci Tlem. Je vais suivre votre conseil.
- sylvanie
- Niveau 11

- Messages : 1556
- Enregistré le : jeu. 26 juil. 2007 21:31
- Localisation : Paris
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
pour la mise en tableau, je préconiserai stringregexp, car celà a l'avantage de filtrer.
par exple :
par exple :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
[C] Re: [..] Equivalent de GREP, SED, CUT, etc
Merci à tous.

- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
ha !
Vous aussi, vous avez des problèmes avec la lecture du texte en rouge ... ?
Vous aussi, vous avez des problèmes avec la lecture du texte en rouge ... ?
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
[R] Re: [..] Equivalent de GREP, SED, CUT, etc
Bonjour Tlem,
J'ai ajouté la balise [R] comme vous me l'avez rappelé. Ai-je oublié autre chose ?
J'ai ajouté la balise [R] comme vous me l'avez rappelé. Ai-je oublié autre chose ?
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Equivalent de GREP, SED, CUT, etc
Ouaip ...
Je ré-écrit la phrase ci-dessous. Lisez attentivement ce qui est en rouge :
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Je ré-écrit la phrase ci-dessous. Lisez attentivement ce qui est en rouge :
N'oubliez pas la balise [R] dans le titre de votre premier message si votre sujet est résolu.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [R] [..] Equivalent de GREP, SED, CUT, etc
Ca y est.
Je ferai mieux sur mon prochain post.
Merci encore.

Je ferai mieux sur mon prochain post.
Merci encore.
- Tlem
- Site Admin

- Messages : 11824
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [R] [..] Equivalent de GREP, SED, CUT, etc
Et sur tous les suivants, ce serait sympa.tibal a écrit :Je ferai mieux sur mon prochain post.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

