[sed] problème de doubles guillemets interprétés.
Résolu/Fermé
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
-
Modifié par Swiss Knight le 14/12/2012 à 21:32
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 16 déc. 2012 à 17:35
Swiss Knight Messages postés 1956 Date d'inscription samedi 22 novembre 2008 Statut Membre Dernière intervention 27 juillet 2016 - 16 déc. 2012 à 17:35
A voir également:
- [sed] problème de doubles guillemets interprétés.
- Guillemets clavier - Forum Réseaux sociaux
- Sed supprimer ligne - Astuces et Solutions
- Doubles écrans - Guide
- Guillemets français clavier ✓ - Forum Clavier
- Espace guillemets - Guide
2 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 409
14 déc. 2012 à 22:47
14 déc. 2012 à 22:47
Salut,
Ce n'est pas un problème de guillemets, chez moi avec sed ça marche très bien, la preuve :
Mais bon c'est bien mieux avec "grep" :
Ce n'est pas un problème de guillemets, chez moi avec sed ça marche très bien, la preuve :
$ cat plop du gros bla cx13z9"3§* &%\/<>asdjhdlk<b class="t2">Some Words</b>encore du gros blablarz313 &\"3§* &%\/<> 39q asd du gros bla cx13z9"3§* &%\/<>asdjhdlk<b class="t2">Some Words</b>encore du gros blablarz313 &\"3§* &%\/<> 39q asd $ sed 's/.*\(<b class="t2">.*<\/b>\).*/\1/g' plop <b class="t2">Some Words</b> <b class="t2">Some Words</b>
Mais bon c'est bien mieux avec "grep" :
grep -o '<b class="t2">[^>]*>' plop <b class="t2">Some Words</b> <b class="t2">Some Words</b> $
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 14/12/2012 à 22:57
Modifié par Swiss Knight le 14/12/2012 à 22:57
Salut.
Ah ben je sais pas ce qui cloche chez moi alors.
C'est ennuyeux. :/
Et je ne savais pas que grep permettait de faire ça !!
Alors ça tombe bien ! Merci de m'avoir donne ce tuyau ; ça fonctionne apparemment très bien ! ;-)
Bonne soirée !
Ah, PS : si je ne souhaite conserver que ce qu'il y a entre les balises, à la manière des regexp quand on fait "rechercher - remplacer" : (truc entre parenthèses) ---> faire appel au truc avec : \1
Comment fait-on avec grep ? C'est possible ?
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
Ah ben je sais pas ce qui cloche chez moi alors.
C'est ennuyeux. :/
Et je ne savais pas que grep permettait de faire ça !!
Alors ça tombe bien ! Merci de m'avoir donne ce tuyau ; ça fonctionne apparemment très bien ! ;-)
Bonne soirée !
Ah, PS : si je ne souhaite conserver que ce qu'il y a entre les balises, à la manière des regexp quand on fait "rechercher - remplacer" : (truc entre parenthèses) ---> faire appel au truc avec : \1
Comment fait-on avec grep ? C'est possible ?
"Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement." -A. Einsten-
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 409
14 déc. 2012 à 23:00
14 déc. 2012 à 23:00
Comment fait-on avec grep ? C'est possible ?
Si tu ne veux conserver que "Some Words", il faudrait passer par des greps successifs via des "pipes", donc là mieux vaut se servir de "sed" et des référence arrières :
Si tu ne veux conserver que "Some Words", il faudrait passer par des greps successifs via des "pipes", donc là mieux vaut se servir de "sed" et des référence arrières :
$ sed 's/.*<b class="t2">\([^<]*\)<\/b>.*/\1/g' plop Some Words Some Words
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
14 déc. 2012 à 23:04
14 déc. 2012 à 23:04
Ok... mais je pige pas : cette commande sed ne fonctionne pas sur le fichier de base. Il doit y avoir des caractères dans le code html qu'elle n'aime pas du tout :/
Par contre, sur le fichier résultant de la commande grep précédente, ça marche bien.
Bon et bien le but est ici atteint, merci ;)
Je coche le "résolu".
Par contre, sur le fichier résultant de la commande grep précédente, ça marche bien.
Bon et bien le but est ici atteint, merci ;)
Je coche le "résolu".
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 409
14 déc. 2012 à 23:10
14 déc. 2012 à 23:10
Il est au format Unix ton fichier ?
Essaye en remplaçant les séparateurs par défaut ( / ) par des dièses (#) ou tout autre caractère susceptible de ne pas se retrouver dans ton code, le caractère paragraphe par exemple ( § ) :
Essaye en remplaçant les séparateurs par défaut ( / ) par des dièses (#) ou tout autre caractère susceptible de ne pas se retrouver dans ton code, le caractère paragraphe par exemple ( § ) :
sed 's#.*<b class="t2">\([^<]*\)<\/b>.*#\1#g'
Swiss Knight
Messages postés
1956
Date d'inscription
samedi 22 novembre 2008
Statut
Membre
Dernière intervention
27 juillet 2016
110
Modifié par Swiss Knight le 14/12/2012 à 23:18
Modifié par Swiss Knight le 14/12/2012 à 23:18
"il est au format Unix ton fichier ?"
> aucune idée. Comment voir ça ?
Je vais tester avec un caractère vraiment spécial alors... on peut utiliser ce genre de caractères tu penses : ?€¶?æ?µ?[¶??¥ ? Ou est-ce trop spécial... ?
edit 1 : avec le dièse # ça ne fonctionne pas mieux
edit 2 : avec le § ça me dit ceci :
> aucune idée. Comment voir ça ?
Je vais tester avec un caractère vraiment spécial alors... on peut utiliser ce genre de caractères tu penses : ?€¶?æ?µ?[¶??¥ ? Ou est-ce trop spécial... ?
edit 1 : avec le dièse # ça ne fonctionne pas mieux
edit 2 : avec le § ça me dit ceci :
sed: -e expression n°1, caractère 2: delimiter character is not a single-byte character
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 409
14 déc. 2012 à 23:22
14 déc. 2012 à 23:22
file fichier pour le savoir, le 1er est au format Unix le second au format Dos (CRLF) :
Un autre façon de le savoir, c'est de faire un "cat -A" ou "sed -n l" sur le fichier, les fichiers Dos se terminent par ^M :
$ file plop bar plop: UTF-8 Unicode text bar: UTF-8 Unicode text, with CRLF line terminators $
Un autre façon de le savoir, c'est de faire un "cat -A" ou "sed -n l" sur le fichier, les fichiers Dos se terminent par ^M :
$ cat -A bar du gros bla cx13z9"3M-BM-'* &%\/<>asdjhdlk<b class="t2">Some Words</b>encore du gros blablarz313 &\"3M-BM-'* &%\/<> 39q asd^M$ du gros bla cx13z9"3M-BM-'* &%\/<>asdjhdlk<b class="t2">Some Words</b>encore du gros blablarz313 &\"3M-BM-'* &%\/<> 39q asd^M$ $