[R] [..] Equivalent de GREP, SED, CUT, etc

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

[R] [..] Equivalent de GREP, SED, CUT, etc

#1

Message par tibal »

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.
Modifié en dernier par tibal le sam. 18 sept. 2010 14:22, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#2

Message par Tlem »

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.
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é".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#3

Message par sylvanie »

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
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#4

Message par tibal »

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 :

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)
 
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#5

Message par Tlem »

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.
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é".
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#6

Message par tibal »

En effet Tlem, j'ai oublié de vous fournir les fichiers parsés. En le contenu :

Fichier server_list.list :

Code : Tout sélectionner

PROD SERVER7
TEST SERVER8
PROD SERVER9
PROD SERVER10
PROD SERVER11
PROD SERVER12
PROD SERVER13
Fichier concession.list :

Code : 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
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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#7

Message par Tlem »

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 genre

Code : Tout sélectionner

SERVER7
SERVER9
SERVER10
SERVER11
SERVER12
SERVER13
Ensuite 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. ;)
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é".
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#8

Message par tibal »

Merci Tlem. Je vais suivre votre conseil.
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#9

Message par sylvanie »

pour la mise en tableau, je préconiserai stringregexp, car celà a l'avantage de filtrer.
par exple :
► Afficher le texte
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

[C] Re: [..] Equivalent de GREP, SED, CUT, etc

#10

Message par tibal »

Merci à tous.
:D
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#11

Message par Tlem »

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é".
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

[R] Re: [..] Equivalent de GREP, SED, CUT, etc

#12

Message par tibal »

Ok Tlem.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#13

Message par Tlem »

ha !
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é".
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

[R] Re: [..] Equivalent de GREP, SED, CUT, etc

#14

Message par tibal »

Bonjour Tlem,
J'ai ajouté la balise [R] comme vous me l'avez rappelé. Ai-je oublié autre chose ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Equivalent de GREP, SED, CUT, etc

#15

Message par Tlem »

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.
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é".
tibal
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mer. 08 sept. 2010 11:00
Status : Hors ligne

Re: [R] [..] Equivalent de GREP, SED, CUT, etc

#16

Message par tibal »

Ca y est.
Je ferai mieux sur mon prochain post.
Merci encore.

:)
Avatar du membre
Tlem
Site Admin
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

#17

Message par Tlem »

tibal a écrit :Je ferai mieux sur mon prochain post.
Et sur tous les suivants, ce serait sympa. ;)
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é".
Répondre