#1 Le 26/08/2014, à 09:25
- Tomzz
[Résolu] Petit problème sed
Bonjour,
J'ai un petit soucis avec la commande sed.
J'ai un fichier texte qui ressemble à ce qui suit:
bla, bla....<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur<br>mon texte nom, prénom autre texte.
Où 200 €, 20%, nom et prénom sont variables.
dans l'espoir d'obtenir:
bla, bla....
Je fais:
sed -i 's/<br>mon texte.*,.*autre texte\.//g' "${rept1}/poliris/annonces.csv"
sed -i 's/<br>Prix de.*incluant la TVA de.*payée.*acquéreur//g' "${rept1}/poliris/annonces.csv"
La première commande marche, mais pas la seconde et j'obtiens:
bla, bla....<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur
Où 200 €, 20%, nom et prénom
Je soupçonne les apostrophes et ou le % d'être la cause du problème, mais j'ai beau tourner et retourner je ne trouve pas.
Une idée?
Dernière modification par Tomzz (Le 26/08/2014, à 14:28)
Hors ligne
#2 Le 26/08/2014, à 09:46
- pingouinux
Re : [Résolu] Petit problème sed
Bonjour,
Est-ce que tu testes tes 2 commandes indépendamment, où est-ce que tu les enchaînes ?
Que veux-tu obtenir exactement ?
Hors ligne
#3 Le 26/08/2014, à 09:46
- tiramiseb
Re : [Résolu] Petit problème sed
Salut,
As-tu essayé sans accents ? Le problème vient peut-être des accents...
Mais je ne comprends pas pourquoi tous ces embêtements...
Pourquoi ne pas faire simplement :
sed -i 's/<br>.*$//' "${rept1}/poliris/annonces.csv"
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#4 Le 26/08/2014, à 11:56
- Tomzz
Re : [Résolu] Petit problème sed
Merci pour vos réponses.
@pingouinux:
Oui, les deux commandes s’enchaînent dans le script, elles pourraient être regroupée en une seule, mais je les ai séparées pour essayer de trouver ce qui bloquait et parce que ailleurs dans le script, en fonction de diverses conditions je peux avoir à conserver l'une ou l'autre partie de ce texte.
Je veux juste supprimer toute cette partie:
<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur<br>mon texte nom, prénom autre texte.
Où 200 €, 20%, nom et prénom sont variable.
@tiramiseb
Je ne peux pas faire:
sed -i 's/<br>.*$//' "${rept1}/poliris/annonces.csv"
Parce que je peux rencontrer d'autres <br>, de plus, le texte bla,bla... avant est une description qui fait jusqu’à 4000 caractères qui est rentrée par divers utilisateurs.
Je prend donc le maximum d’éléments de l'expression à supprimer afin de réduire les risques de rencontrer le texte que je veux supprimer ailleurs dans la description.
Hors ligne
#5 Le 26/08/2014, à 12:02
- tiramiseb
Re : [Résolu] Petit problème sed
As-tu essayé sans accents ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 26/08/2014, à 12:07
- Tomzz
Re : [Résolu] Petit problème sed
Je ne peux/veux pas supprimer les accents, ils font parti intégrante du texte.
Le texte est destiné à être lu.
Hors ligne
#7 Le 26/08/2014, à 12:08
- tiramiseb
Re : [Résolu] Petit problème sed
Je ne te demande pas de supprimer les accents du texte en prod', je te demande de tester sans accent pour voir si le problème est lié aux accents ou pas.
(et remplace le "€" par un "E", pour voir, aussi)
Je pencherais alors pour un problème d'encodage. Mais avant de se prendre la tête avec ça, autant tester si ça vaut le coup.
Dernière modification par tiramiseb (Le 26/08/2014, à 12:09)
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#8 Le 26/08/2014, à 12:13
- tiramiseb
Re : [Résolu] Petit problème sed
En tout cas, chez moi toutes les commandes suivantes fonctionnent :
echo "bla, bla....<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur<br>mon texte nom, prénom autre texte." | sed 's/<br>mon texte.*,.*autre texte\.//g;s/<br>Prix de.*incluant la TVA de.*payée.*acquéreur//g'
echo "bla, bla....<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur<br>mon texte nom, prénom autre texte." | sed 's/<br>mon texte.*,.*autre texte\.//g' | sed 's/<br>Prix de.*incluant la TVA de.*payée.*acquéreur//g'
echo "bla, bla....<br>Prix de 200 € incluant la TVA de 20% payée par l'acquéreur<br>mon texte nom, prénom autre texte." | sed 's/<br>Prix de.*incluant la TVA de.*payée.*acquéreur<br>mon texte.*,.*autre texte\.//g'
Par ailleurs, s'il n'y a cela qu'une fois sur chaque ligne, alors le "g" final est inutile ; mais tu as peut-être ces phrases plusieurs fois par ligne...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 26/08/2014, à 12:16
- Tomzz
Re : [Résolu] Petit problème sed
Ok, je teste.
Mais tu as mis le doigt sur un truc, je converti mon fichier en WINDOWS-1252 juste avant dans le script.
Je vais reprendre tout ça pour essayer de faire la conversion utf8 > WINDOWS-1252 après ma commande sed.
Hors ligne
#10 Le 26/08/2014, à 12:22
- tiramiseb
Re : [Résolu] Petit problème sed
Ah ben oui, si tu changes l'encodage avant de traiter le fichier, ton système n'y comprendra plus rien
En effet, soit tu dois dire à sed de travailler en "WINDOWS-1252" (si c'est possible) soit tu dois le convertir après.
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 26/08/2014, à 14:28
- Tomzz
Re : [Résolu] Petit problème sed
Merci, honte à moi, j'avais oublié que je faisais cette conversion.
Maintenant ça marche.
Hors ligne