[sed] problème de doubles guillemets interprétés.
Résolu
Swiss Knight
Messages postés
1956
Date d'inscription
Statut
Membre
Dernière intervention
-
Swiss Knight Messages postés 1956 Date d'inscription Statut Membre Dernière intervention -
Swiss Knight Messages postés 1956 Date d'inscription Statut Membre Dernière intervention -
'soir tout le monde,
petite bûche (pas de Noël malheureusement) avec sed :
j'aimerai que la commande sed là en dessous :
me retourne ça :
mais apparemment les doubles guillemets dans la commande sed sont interprétés au lieu d'être lus comme tels... et mon fichier n'est pas traité.
J'ai essayé de les échapper, de les mettre entre crochets, entre guillemets simples, de les remplacer par \x22, de faire à peu près tous les mix possibles entre tout ça mais rien ne fonctionne.
Si quelqu'un voit où ça coince... Merci !
ps: je suis sous Ubuntu.
avec : GNU sed version 4.2.1
petite bûche (pas de Noël malheureusement) avec sed :
j'aimerai que la commande sed là en dessous :
$ echo 'du gros bla cx13z9"3§* &%\/<>asdjhdlk<b class="t2">Some Words 1</b>encore du gros blablarz313 &\"3§* &%\/<> 39q asd' > test $ echo 'du gros bla cx13z9"3§* &%\/<>asdjhdlk<b class="t2">Some Words 2</b>encore du gros blablarz313 &\"3§* &%\/<> 39q asd' >> test $ sed 's/.*\(<b class="t2">.*<\/b>\).*/\1/g' test
me retourne ça :
<b class="t2">Some Words 1</b> <b class="t2">Some Words 2</b>
mais apparemment les doubles guillemets dans la commande sed sont interprétés au lieu d'être lus comme tels... et mon fichier n'est pas traité.
J'ai essayé de les échapper, de les mettre entre crochets, entre guillemets simples, de les remplacer par \x22, de faire à peu près tous les mix possibles entre tout ça mais rien ne fonctionne.
Si quelqu'un voit où ça coince... Merci !
ps: je suis sous Ubuntu.
avec : GNU sed version 4.2.1
A voir également:
- Remplacer le mot eros par le mot amour dans tout le texte. combien de caractères contient le document suite à cette modification (en incluant les espaces) ?
- Guillemets anglais - Guide
- Guillemets français google doc ✓ - Forum Microsoft Office
- Problème affichage double écran windows 11 ✓ - Forum Ecran
- Décodeur sedea pas de signal - Forum TNT / Satellite / Réception
- Sed supprimer ligne - Astuces et Solutions
2 réponses
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> $
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-
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".
"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
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$ $