Pages : 1
#1 Le 05/10/2013, à 22:55
- yoyostone
Petit problème avec grep
Bonjour a tous !
après plusieurs recherches non concluantes je me décide a venir poster mon problème ici ,
j'ai un fichier txt contenant un code html et je voudrais Tout enlever sauf les chaines de type data-video-id"*********"
en gros faire l'inverse de la fonction rechercher et remplacer
j'ai essayer de le faire avec grep dans un terminal en utilisant
cat monfic | grep -e "data-video-id=............." >>teste.txt
mais mon fichier txt contient exactement le meme contenu que mon fichier d'origine
Hors ligne
#2 Le 05/10/2013, à 23:48
- Zakhar
Re : Petit problème avec grep
1- useless cat award (bon, ça à la limite c'est pas grave !)
2- grep travaille par ligne, c'est à dire par blocs séparés par un retour chariot. Or comme tu parles de HTML, HTML se fiche bien pas mal des retour chariot (c'est équivalent à une espace), et il est donc tout à fait possible que ton fichier HTML soit en fait sur une seule ligne. Par conséquent, si tu "matches" un bout de la ligne, il va te sélectionner toute la ligne et donc tout le fichier.
Conclusion : tu n'utilises pas le bon outil !..
Regarde plutôt du côté de sed... et bonne chance.
Dernière modification par Zakhar (Le 05/10/2013, à 23:48)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#3 Le 06/10/2013, à 00:08
- yoyostone
Re : Petit problème avec grep
Le problème avec sed c'est qu'il fais justement la fonction rechercher et remplacer et que je n'ai rien trouver qui changerais ceci alors que le grep -v recherche les lignes qui ne correspondent pas au motif ! du coup il faudrait utiliser la commande sed sur un grep -v mais c'est au dessus de mes compétences
Hors ligne
#4 Le 06/10/2013, à 00:50
- nesthib
Re : Petit problème avec grep
grep -oP 'data-video-id="[^"]+"' fichier
trouvera tous les « data-video-id="xxx" », quelque soit le contenu de « xxx » en excluant les « " ».
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#5 Le 06/10/2013, à 08:44
- Zakhar
Re : Petit problème avec grep
Tout enlever sauf ....
... les lignes qui ne correspondent pas ....
Es-tu sûr de bien exprimer ce que tu veux faire ?
La première phrase est alambiquée, c'est une double négation. Tout enlever sauf, ça veut dire précisément garder le motif.
Dans l'autre cas tu dis au contraire que tu ne veux pas garder le motif.
Bref, déjà il faut exprimer clairement ce que tu souhaites faire, et tu verras que tu auras fait la moitié du travail !..
Aussi, lorsque c'est clairement exprimé, on arrive plus facilement à t'aider... sinon à l'évidence on peut très bien te conseiller des trucs qui font le contraire de ce que tu veux faire puisqu'on n'a pas bien compris.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#6 Le 06/10/2013, à 10:59
- yoyostone
Re : Petit problème avec grep
Alors pour bien m'exprimer : J'ai pris le code source d'une page youtube avec dessus une playlist de 1000 et quelques vidéos , Dans ce code source Le lien de toute les vidéos est exprimé par : data-video-id:"quelques chiffres" Je voudrais donc supprimer tout sauf ce lien la + le data vidéo
Hors ligne
#7 Le 06/10/2013, à 11:03
- yoyostone
Re : Petit problème avec grep
J'ai essayer la réponse de nesthib et c'est exactement sa ! j'ai juste eu a rediriger la réponse dans un ficher txt et voila merci a tous !
Hors ligne
#8 Le 06/10/2013, à 18:38
- nesthib
Re : Petit problème avec grep
Modifie ton premier message et ajoute [résolu] au début du titre
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 06/10/2013, à 22:51
- Zakhar
Re : Petit problème avec grep
Sympa l'option -o de grep.
Je retiens !..
En plus s'il y a plusieurs patterns sur la ligne, il les match tous.
$ echo "Coucou et Coucou sont dans un bateau" | grep -o Coucou
Coucou
Coucou
Ca peut certainement remplacer avantageusement certains de mes sed's ;-)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne