#1 Le 17/11/2008, à 16:31
- Nick_rivers
[Résolu] rgrep ! affinier une recherche
Bonjour à tous,
voila j'aimerai avoir une indication
j'explique mon problème, je dispose d'un fichier xml, dans lequel j'effectue une recherche pour en extraire certaines informations. En l'occurence le Code EAN.
j'execute donc la commande :
rgrep "codeEan\=*" monfichier.xml
il me retourne bien les codes ean présent, sous la forme
<Product codeEan="37000124455452">
j'aimerai trouver une solution pour n'avoir que le "code ean=000000000" et non le reste de la balise.
le but final étant de pouvoir voir les doublons présent donc par la suite utiliser sed ?
en vous remerciant d'avance.
Dernière modification par Nick_rivers (Le 18/11/2008, à 16:56)
Hors ligne
#2 Le 17/11/2008, à 16:45
- tshirtman
Re : [Résolu] rgrep ! affinier une recherche
tu peut utiliser sed, mais cut est plus simple
là je ferais
rgrep "codeEan\=*" monfichier.xml |cut -d '"' -f 1
(delimotator = ", et field = 1.
edit à non pardon tu veux garder "code ean", sépare plutot par espace alors, et compte les mots, si tu as un problème avec des espaces multiples, utilise "tr -s ' ' ' '" avant le cut.
Hors ligne
#3 Le 17/11/2008, à 16:56
- Nick_rivers
Re : [Résolu] rgrep ! affinier une recherche
merci pour la réponse !
la commande me retourne :
<Product codeEan=
j'étais tombé sur quelque chose de similaire en essayant !
et j'aimerai bien n'avoir que :
codeEan="37000124455452"
je vais continuer, bien finir par trouver
merci
Hors ligne
#4 Le 17/11/2008, à 17:04
- tshirtman
Re : [Résolu] rgrep ! affinier une recherche
rgrep "codeEan\=*" monfichier.xml |cut -d ' ' -f 2|cut -d'>' -f1
plus haut avec " comme délimiteur il fallait -f2 et non 1.
Dernière modification par tshirtman (Le 17/11/2008, à 17:05)
Hors ligne
#5 Le 17/11/2008, à 17:10
- Nick_rivers
Re : [Résolu] rgrep ! affinier une recherche
je viens de m'en rendre compte !
rgrep "codeEan\=*" monfichier.xml |cut -d '=' -f 2|cut -d'>' -f1
ça me ressort ce que je voulais !
Merci de ta patience et pour tes réponses rapides
ps je citais le sed plus haut c'était pour la suite faire un tri et traiter les doublons éventuels
Dernière modification par Nick_rivers (Le 17/11/2008, à 17:14)
Hors ligne
#6 Le 17/11/2008, à 17:39
- tshirtman
Re : [Résolu] rgrep ! affinier une recherche
[résolu]?
Hors ligne
#7 Le 17/11/2008, à 17:45
- Nick_rivers
Re : [Résolu] rgrep ! affinier une recherche
résolu !
merci
Hors ligne
#8 Le 17/11/2008, à 18:49
- Totor
Re : [Résolu] rgrep ! affinier une recherche
Bonsoir,
Il existe une solution grep sans utiliser les cut qui est d'utiliser l'option -o :
rgrep -o "codeEan\=\"[0-9]*\"" monfichier.xml
Note : je suppose que monfichier.xml n'est pas "fixe", sinon l'utilisation de l'option -r n'a pas d'intérêt (rgrep)
-- Lucid Lynx --
Hors ligne
#9 Le 17/11/2008, à 18:55
- tshirtman
Re : [Résolu] rgrep ! affinier une recherche
ah je ne connaissais pas cette option, merci
Hors ligne
#10 Le 18/11/2008, à 09:50
- Nick_rivers
Re : [Résolu] rgrep ! affinier une recherche
je cherche maintenant à faire un script pour trouver les doublons des code ean présents
effectuer une boucle qui compare les codes présents. Du genre comparer avec la ligne précédente et si identique extraire les doublons.
je pense que c'est le plus simple ?
merci
Hors ligne
#11 Le 18/11/2008, à 11:20
- Totor
Re : [Résolu] rgrep ! affinier une recherche
Ceci devrait faire l'affaire :
rgrep -o "codeEan\=\"[0-9]*\"" monfichier.xml|sort|awk 'BEGIN {old=""} { if (old == $0) {print}; old=$0 }' | sort -u
EDIT : ajout du -u
Dernière modification par Totor (Le 18/11/2008, à 13:43)
-- Lucid Lynx --
Hors ligne
#12 Le 18/11/2008, à 16:56
- Nick_rivers
Re : [Résolu] rgrep ! affinier une recherche
Merci pour la réponse ! j'ai également fini par trouver une solution !
Hors ligne