Quel logiciel pour parser un fichier texte ?

Quel logiciel pour parser un fichier texte ? - Logiciels - Windows & Software

Marsh Posté le 15-02-2007 à 13:45:36    

Bonjour à tous,
 
Je cherche un logiciel (freeware si possible), qui me permettrait de parser un fichier texte, y chercher une chaine de caractères que je lui aurais fourni, puis qui me collerait la ligne concernée dans un autre fichier de sortie.
 
27000 lignes à parser, et il faudra faire ce genre de choses pratiquement tous les jours, je cherche donc quelque chose d'assez fiable quand meme :)
 
Si vous connaissez un tel logiciel merci de m'en faire part, mes recherches sur google avec "parser", "analyser" ont rendu a peu près heu....n'importe quoi :/
 
PS : oui je sais, avec un basic à la noix ou WSH on peut le faire, seulement voila, bécane de m....e, pas les logiciels qui vont bien dessus.

Reply

Marsh Posté le 15-02-2007 à 13:45:36   

Reply

Marsh Posté le 15-02-2007 à 13:48:03    

Avec un linux (ou cygwin qui s'installe sous Windows), un cat, un grep, une redirection, et c'est fait ;)


---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 15-02-2007 à 13:48:54    

Avec ce soft je m'occupe de rien :)
 
T'a la commande ? Ca m'interesse !

Reply

Marsh Posté le 15-02-2007 à 13:52:54    

Un truc dans ce style là :
cat le_fichier|grep "la chaine à chercher" > fichier_de_sortie

Message cité 1 fois
Message édité par freds45 le 15-02-2007 à 13:52:59

---------------
Filmstory : gardez trace des films que vous avez vu ! :D
Reply

Marsh Posté le 15-02-2007 à 13:56:14    

freds45 a écrit :

Un truc dans ce style là :
cat le_fichier|grep "la chaine à chercher" > fichier_de_sortie

 

Ha ouais mais non, hein, j'ai une pauvre bouse, je me vois déjà mal installer un XP la dessus, alors si c'est pour y mettre un cygwin pour lancer un grep :/

 

Bon, ceci dit, grep doit bien exister sous ligne de commande pour windows, je vais chercher, merci :D

 

EDIT : bon bin Windows Grep m'a bien aidé, il me faut 2 passages pour faire ce que je veux, mais ça marche très bien :jap:


Message édité par pupoul le 15-02-2007 à 14:13:33
Reply

Marsh Posté le 15-02-2007 à 14:23:37    

Heu awk est fait pour toi je pense....

 

http://www.shellunix.com/awk.html

 

tu as deja trouvé mais je continue a répondre.
Avec awk :

 

awk '/toto/ { print $0}' file_input

 

Cette ligne imprime chaque ligne ou la chaîne de charactère 'toto' est présente.

Message cité 1 fois
Message édité par wathou le 15-02-2007 à 14:42:13
Reply

Marsh Posté le 15-02-2007 à 17:53:07    

wathou a écrit :

Heu awk est fait pour toi je pense....
 
http://www.shellunix.com/awk.html
 
tu as deja trouvé mais je continue a répondre.  
Avec awk :
 
awk '/toto/ { print $0}' file_input
 
Cette ligne imprime chaque ligne ou la chaîne de charactère 'toto' est présente.


 
Alors là, chapeau bas. :jap:
 
Awk est effectivement magnifique, mais je me retrouve un poil bloqué.
Je sais que ce n'est pas vraiment la catégorie pour, m'enfin, j'ai trouvé quelqu'un qui connait alors j'essaie quand meme :D
 

Citation :

BEGIN {
 RS = "\n"
 ORS="\r\n"
 OFS=":"
 FS = ":"
 cnt=0
 }
 
$3 ~ /GUICHET/ {
 Guichet = $4
}
$3 !~ /GUICHET/{
 $4 ~ / 1J900......../ && $3 ~ /CAB    / {cnt++; print substr($3,1,3) substr($4,2,13) "GUICHET" Guichet > "toto.txt"}
}
END {
 print cnt " lignes" > "toto.txt"
}


 
Voilà ce que j'ai pondu, le but est le suivant :
Dans un fichier de x milliers de lignes, repérer les lignes qui contiennent "CAB    " dans le champ 3 et aussi 1J900 dans le champ 4.
Ca je sais faire, mais ça ne suffit pas.
Je dois aussi regarder la ligne du dessus, savoir si elle contient dans le champ 3 le mot "GUICHET".
 
Et là, ça coince, j'ai beau tenter ce que je veux, je me fais jeter  
"line 13: syntax error at or near {"
et
"line 14: syntax error at or near }"
 
J'avais précédemment essayé, lorsque "GUICHET" était trouvé de faire un "getline" seulement cela semble surchargé les champs qui contiennent alors l'ensemble du fichier texte...
 
Si tu as une solution, merci de m'en faire part :)

Reply

Marsh Posté le 15-02-2007 à 17:58:54    

Bon je me réponds à moi-même :

 
Citation :

BEGIN {
 RS = "\n"
 ORS = "\r\n"
 OFS = ":"
 FS = ":"
 cnt = 0
 }

 

$3 ~ /GUICHET/ {
 Guichet = $4
}
$4 ~ / 1J900......../ && $3 ~ /CAB    / {cnt++; print substr($3,1,3) substr($4,2,13) "GUICHET" Guichet > "toto.txt"}

 

END {
 print cnt " lignes" > "toto.txt"
}

 

Ca marche ça, mais je me demande bien pourquoi le programme précédent ne fonctionnait pas...

 

EDIT : En tout cas, énorme merci c'est l'outil dont j'avais besoin :jap:


Message édité par pupoul le 15-02-2007 à 18:14:17
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed