OVH Cloud OVH Cloud

enlever des espaces mais pas tous

9 réponses
Avatar
Rodolphe Mosca
Bonjour,

Merci pour l'aide précieuse lors de mon premier post...

Maintenant que j'ai enlevé les tabulations, je me retrouve avec un
autre problème...
id3tool (que je commence à regretter) ajoute des espaces à la fin de
chaque variable (auteur, titre,...)
il faut donc que je les enlèves...

le problème c'est qui il y a aussi des espaces dans les noms que je ne
veux pas enlever...

donc pas possible d'utiliser un truc du genre titre=${titre%*(espace) }

9 réponses

Avatar
Thomas Nemeth
Le sam 05 jun 2004 à 13:30, Rodolphe Mosca a tapoté :
| Bonjour,

Bonjour,


| id3tool (que je commence à regretter) ajoute des espaces à la fin de
| chaque variable (auteur, titre,...)
| il faut donc que je les enlèves...
| le problème c'est qui il y a aussi des espaces dans les noms que je ne
| veux pas enlever...
|
| donc pas possible d'utiliser un truc du genre titre=${titre%*(espace) }

titre=`echo "$titre" | sed -e 's/ *$//'`


Thomas
--
Une personne qui continue à sourire quand tout va mal pense à
quelqu'un sur qui rejeter la faute.
Avatar
Rodolphe Mosca
On 2004-06-05 13:51:39 +0200, Thomas Nemeth said:

Le sam 05 jun 2004 à 13:30, Rodolphe Mosca a tapoté :
| Bonjour,

Bonjour,


| id3tool (que je commence à regretter) ajoute des espaces à la fin de
| chaque variable (auteur, titre,...)
| il faut donc que je les enlèves...
| le problème c'est qui il y a aussi des espaces dans les noms que je
ne | veux pas enlever...
| | donc pas possible d'utiliser un truc du genre titre=${titre%*(espace) }

titre=`echo "$titre" | sed -e 's/ *$//'`


Thomas


J'ai fait çà :

while [ "${artist:${#artist}-1:1}" = " " ] ; do artist=${artist% } ; done

ca fonctionne... (trouvé tout seul comme un grand ;-)

mais sérieusement, tu proposes de passer par sed... c'est mieux ? (plus
rapide, plus prope... je sais pas...)

Avatar
Thomas Nemeth
Le sam 05 jun 2004 à 14:00, Rodolphe Mosca a tapoté :
| On 2004-06-05 13:51:39 +0200, Thomas Nemeth said:
|
| > titre=`echo "$titre" | sed -e 's/ *$//'`
|
| J'ai fait çà :
|
| while [ "${artist:${#artist}-1:1}" = " " ] ; do artist=${artist% } ; done
|
| ca fonctionne... (trouvé tout seul comme un grand ;-)

:)


| mais sérieusement, tu proposes de passer par sed... c'est mieux ? (plus
| rapide, plus prope... je sais pas...)

Je préfère. Mais c'est un avis perso et empreint de subjectivité. En
général je n'aime pas utiliser les spécificités d'un shell pour mes
scripts : ça les rends moins portable. Les outils comme sed, awk,
grep et j'en passe, sont présents sur quasiment tous les systèmes
unix avec plus ou moins les mêmes options.

Ce que j'ai écrit marche sur tous les unix normalement, avec sh et
sed.


Thomas
--
Pas de panique ! Multi-modérer l'infrastructure fibro-câblée
ne nous empêche pas de poly-ajuster l'hétéro-newbie résonnant
ni même de capillo-tracter le filtre mediatico-réticulaire.
Avatar
Unknown
le problème c'est qui il y a aussi des espaces dans les noms que je ne
veux pas enlever...


s'ils sont à la fin tu fais :
var=`echo $var`

Avatar
Rodolphe Mosca
On 2004-06-05 15:48:57 +0200, Unknown said:

le problème c'est qui il y a aussi des espaces dans les noms que je ne
veux pas enlever...


s'ils sont à la fin tu fais :
var=`echo $var`


arggggg.... il me tue là... tu as oublié de rajouter : "tout simplement ;-)"


Avatar
JustMe
Rodolphe Mosca wrote:

On 2004-06-05 15:48:57 +0200, Unknown said:

le problème c'est qui il y a aussi des espaces dans les noms que je
ne veux pas enlever...



s'ils sont à la fin tu fais :
var=`echo $var`



arggggg.... il me tue là... tu as oublié de rajouter : "tout simplement
;-)"



marchera pas si il y a un meta caractere et que par malchance ca matche
un nom de fichier

essaye :

var="* "
par exemple



Avatar
Stephane CHAZELAS
2004-06-5, 20:58(+02), Rodolphe Mosca:
On 2004-06-05 15:48:57 +0200, Unknown said:

le problème c'est qui il y a aussi des espaces dans les noms que je ne
veux pas enlever...


s'ils sont à la fin tu fais :
var=`echo $var`


arggggg.... il me tue là... tu as oublié de rajouter : "tout simplement ;-)"


Sauf que...

- ca enleve aussi les tabulations et les sauts de lignes
- ca va deconner (voire deconner grave) s'il y a des wildcards
dans $var (par exemple, un petit denial of quality of service
voire plus grave avec /*/*/*/../../../*/*/*/../../../*/*/*)
- ca va deconner encore (differemment suivant la version de
echo) pour des var="-n", var=' // //'

fix_var() {
IFS=" "
set -f
eval "set x $$1"
shift
eval "$1=$*"
}
myvar=" A B C "
fix_var myvar

--
Stephane



Avatar
Stephane Chazelas
2004-06-8, 13:16(+00), Stephane CHAZELAS:
[...]
fix_var() {
IFS=" "
set -f
eval "set x $$1"
shift
eval "$1=$*"
}
myvar=" A B C "
fix_var myvar


Personne ne suit, apparemment. Il fallait lire:

fix_var() {
_varname=$1
IFS=" "
set -f
eval "set x $$_varname"
shift
eval "$_varname=$*"
}
myvar=" A B C "
fix_var myvar

--
Stephane

Avatar
Rodolphe Mosca
On 2004-06-08 20:22:54 +0200, Stephane Chazelas
said:

2004-06-8, 13:16(+00), Stephane CHAZELAS:
[...]
fix_var() {
IFS=" "
set -f
eval "set x $$1"
shift
eval "$1=$*"
}
myvar=" A B C "
fix_var myvar


Personne ne suit, apparemment. Il fallait lire:

fix_var() {
_varname=$1
IFS=" "
set -f
eval "set x $$_varname"
shift
eval "$_varname=$*"
}
myvar=" A B C "
fix_var myvar


heu... et ma solution, elle est bien ma solution en bash ?
pour rappel : while [ "${artist:${#artist}-1:1}" = " " ] ; do
artist=${artist% } ; done