Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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

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"

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 ?

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)

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...

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 smile

En effet, soit tu dois dire à sed de travailler en "WINDOWS-1252" (si c'est possible) soit tu dois le convertir après.

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