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 04/03/2020, à 19:26

soupaloignon

Un problème avec Sed

Bonjour le forum,

J'ai un problème avec Sed, que je ne comprends pas.

Dans cette portion de code, tout fonctionne bien, et la variable $QUALITE2 est bien renvoyée, que cela soit en retour console, ou dans le fichier "test", à savoir "1080HDL" (sans les guillemets)

#!/bin/bash

QUALITE=" - 1080HDL"

QUALITE2=$(echo -e $QUALITE | sed -r 's/ - //g')

echo $QUALITE2 >> test

echo $QUALITE2 

Par contre quand je veux récupérer cette variable $QUALITE2 dans la ligne ci-dessous (6eme colonne) :

echo "true;$FILM;$ANNEE;$REAL_NOM ($REAL_PRENOM);$GENRE;$QUALITE2;$ACTEURS;$RESUME3" >> /home/soupaloignon/Téléchargements/"$FILM"

Cela me renvoi cette valeur : ;- 1080HDL;
Sed n'a enlevé que le 1er caractère, un espace, ce qui donne "- 1080HDL"

Avez-vous une piste, une idée, une solution ? smile

Merci par avance

Dernière modification par soupaloignon (Le 04/03/2020, à 19:28)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 04/03/2020, à 19:35

nany

Re : Un problème avec Sed

Bonjour,


A priori, je dirais qu’il faut échapper le signe -.

QUALITE2=$(echo -e $QUALITE | sed -r 's/ \- //g')

En ligne

#3 Le 04/03/2020, à 19:37

Watael

Re : Un problème avec Sed

salut,

d'abord, les variables utilisateurs ne doivent pas être tout en majuscules.

et, dans ton cas de substitution très simple, sed est inutile :

qualiT2=${qualiT/# - }

Dernière modification par Watael (Le 04/03/2020, à 19:38)


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 04/03/2020, à 19:38

erresse

Re : Un problème avec Sed

soupaloignon a écrit :

Dans cette portion de code, tout fonctionne bien, et la variable $QUALITE2 est bien renvoyée, que cela soit en retour console, ou dans le fichier "test", à savoir "1080HDL" (sans les guillemets)

Ben non, cela n'est pas vrai...

QUALITE=" - 1080HDL"
QUALITE2=$(echo -e $QUALITE | sed -r 's/ - //g')
echo $QUALITE2 
- 1080HDL

Donc la même chose que dans ta dernière commande.
Edit: Ha ben les cadors se sont déjà mobilisés... trop tard pour moi !

Dernière modification par erresse (Le 04/03/2020, à 19:39)


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#5 Le 04/03/2020, à 19:40

soupaloignon

Re : Un problème avec Sed

Merci nany pour ta réponse, mais cela ne fonctionne pas et renvoi toujours "- 1080HDL"


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 04/03/2020, à 19:44

soupaloignon

Re : Un problème avec Sed

Non eresse, merci, et pas trop tard pour toi, effectivement cette commande renvoie un mauvais résultat aussi. Je creuse


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#7 Le 04/03/2020, à 19:49

pingouinux

Re : Un problème avec Sed

Bonjour,
Essaye

QUALITE2=$(echo -e "$QUALITE" | sed -r 's/ - //g')

ou

QUALITE2=$(echo "$QUALITE" | sed -r 's/ - //g')

ou

QUALITE2=$(sed -r 's/ - //g' <<<"$QUALITE")

Hors ligne

#8 Le 04/03/2020, à 19:52

Watael

Re : Un problème avec Sed

ou
ne pas utiliser sed pour une substitution aussi simple.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#9 Le 04/03/2020, à 19:53

erresse

Re : Un problème avec Sed

Watael a écrit :

salut,

d'abord, les variables utilisateurs ne doivent pas être tout en majuscules.

et, dans ton cas de substitution très simple, sed est inutile :

qualiT2=${qualiT/# - }

Heu, Watael, pourrais-tu expliquer pourquoi tu mets ${qualiT/# - } dans ta suppression de sous-chaîne plutôt que juste ${qualiT# - } qui semble déjà faire le boulot ? Est-ce que la substitution supplémentaire sert dans un cas spécifique ?


Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois résolu, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.

Hors ligne

#10 Le 04/03/2020, à 20:01

soupaloignon

Re : Un problème avec Sed

Merci à tous pour vos précieux retours,

Pinguinux :

QUALITE2=$(echo -e "$QUALITE" | sed -r 's/ - //g')

fonctionne nickel, j'adopte

Watael : je me fait avoir à chaque fois, je vais changer la casse de mes variables utilisateurs wink.  Et je ne connaissais pas ce type de substitution sans sed, merci pour l'info


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#11 Le 04/03/2020, à 20:09

Watael

Re : Un problème avec Sed

pourquoi tu mets ${qualiT/# - } dans ta suppression de sous-chaîne plutôt que juste ${qualiT# - }

parce que je suis parti sur une substitution.
mais en effet un suppression est encore plus simple.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne