Suppression des espaces dans une variable
Résolu/Fermé
A voir également:
- Suppression des espaces dans une variable
- Forcer suppression fichier - Guide
- Espaces insécables - Guide
- Suppression des cookies - Guide
- Suppression page word - Guide
11 réponses
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 déc. 2011 à 14:55
9 déc. 2011 à 14:55
Salut,
lami20j@debian-acer:~$ var=" aaa " lami20j@debian-acer:~$ echo "|$var|" | aaa | lami20j@debian-acer:~$ echo "|${var// /}|" |aaa|
Utilisateur anonyme
9 déc. 2011 à 15:05
9 déc. 2011 à 15:05
salut,
si tu utilises bash vérifie que shopt extglob est sur on (sinon active-le), et utilise la correspondance de motif étendue
sinon utilise sed.
si tu utilises bash vérifie que shopt extglob est sur on (sinon active-le), et utilise la correspondance de motif étendue
zone2="${zone2//+( )/ }"
sinon utilise sed.
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
9 déc. 2011 à 15:13
9 déc. 2011 à 15:13
hello
$ shopt -s extglob $ z=" aaa bbb " $ echo "-${z}-" - aaa bbb - $ $ z=${z##*( )} $ z=${z%%*( )} $ echo "-${z}-" -aaa bbb- $
Bonjour,
Ca ne fonctionne pas. Je suis en AIX 6.1. Il n'y a pas shopt sur le système. Je veux bien essayer avec sed ou awk, mais je ne connais pas assez bien ces commandes.
Une autre idée ?
Merci
Ca ne fonctionne pas. Je suis en AIX 6.1. Il n'y a pas shopt sur le système. Je veux bien essayer avec sed ou awk, mais je ne connais pas assez bien ces commandes.
Une autre idée ?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Oui, les trois propositions. Même la première ne fonctionne pas,
test2.sh[3]: "|${var// /}|": bad substitution
Cordialement,
Oui, les trois propositions. Même la première ne fonctionne pas,
test2.sh[3]: "|${var// /}|": bad substitution
Cordialement,
dubcek
Messages postés
18755
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
14 novembre 2024
5 622
9 déc. 2011 à 15:30
9 déc. 2011 à 15:30
ton shell est ksh ?
$ z=" aaa bbb " $ echo "-${z}-" - aaa bbb - $ $ z=$(echo "$z" | sed 's/^ *//;s/ *$//') $ echo "-${z}-" -aaa bbb- $
Utilisateur anonyme
9 déc. 2011 à 15:32
9 déc. 2011 à 15:32
zon2=$(echo "$zon2 | sed 's/ \{1,\}/ /g')
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 déc. 2011 à 15:49
9 déc. 2011 à 15:49
Salut,
Ici tu as oublié un " après zon2 ;-)
Ici tu as oublié un " après zon2 ;-)
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 déc. 2011 à 15:41
9 déc. 2011 à 15:41
lami20j@debian-acer:~$ var=" Bonjour Monsieur " lami20j@debian-acer:~$ echo "|$var|" | Bonjour Monsieur | lami20j@debian-acer:~$ var2=$(echo "$var" | perl -pe 's/^ *| *$//g') lami20j@debian-acer:~$ echo "|$var2|" |Bonjour Monsieur|
Utilisateur anonyme
Modifié par qqchquicommenceparQ le 9/12/2011 à 15:48
Modifié par qqchquicommenceparQ le 9/12/2011 à 15:48
j'avais mal lu
while IFS=":" read zone1 zone2 zone3; do zone2=$(echo $zone2); echo "-${zone2}-"; done <<<""Libelle du message : bonjour Monsieur :" -Bonjour monsieur-derait résoudre ton "problème". l'emplacement de l'IFS est important ici il n'est modifié que pour read.
merci pour toutes vos réponses, mais ça ne fonctionne toujours pas. En fait vos exemples fonctionnent lorsqu'on les prend tels quels. Mais lorsqu'on les place dans une boucle while avec IFS=:, alors là, ça ne fonctionne plus ....
voici le fichier en entrée (du moins un extrait):
(Toujours pareil , & remplace un espace)
upgl1-dmsys:/tmp-> cat browse_req.tmp
:Createur&&&&&&&&:&GL11401&&&&&&&&:
:Date&de&creation&&&&&&&&:&14-APR-2011&&&&&&&&:
:Serveur&de&distribution&&&&&&&&:&OUI&&&&&&&&
:Breve&description&&&&&&&&:&Elisabeth&&&&&&&&
et voilà le programme
IFS=":"
# lecture du fichier resultat pour extraction des attributs
while read zon1 zon2 zon3 zon4 zon5
do
zon2=$(echo "$zon2" | sed 's/ \{1,\}/ /g')
echo "|$zon2|"
done < /tmp/browse_req.tmp
et voilà ce que ça donne
|Createur&&&&&&&&|
|Date&de&creation&&&&&&&&|
|Serveur&de&distribution&&&&&&&&|
|Breve&description&&&&&&&&|
voici le fichier en entrée (du moins un extrait):
(Toujours pareil , & remplace un espace)
upgl1-dmsys:/tmp-> cat browse_req.tmp
:Createur&&&&&&&&:&GL11401&&&&&&&&:
:Date&de&creation&&&&&&&&:&14-APR-2011&&&&&&&&:
:Serveur&de&distribution&&&&&&&&:&OUI&&&&&&&&
:Breve&description&&&&&&&&:&Elisabeth&&&&&&&&
et voilà le programme
IFS=":"
# lecture du fichier resultat pour extraction des attributs
while read zon1 zon2 zon3 zon4 zon5
do
zon2=$(echo "$zon2" | sed 's/ \{1,\}/ /g')
echo "|$zon2|"
done < /tmp/browse_req.tmp
et voilà ce que ça donne
|Createur&&&&&&&&|
|Date&de&creation&&&&&&&&|
|Serveur&de&distribution&&&&&&&&|
|Breve&description&&&&&&&&|
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
9 déc. 2011 à 15:58
9 déc. 2011 à 15:58
Essaie
IFS=":" # lecture du fichier resultat pour extraction des attributs while read zon1 zon2 zon3 zon4 zon5 do zon2=$(echo "zon2" | perl -pe 's/^ *| *$//g') echo "|$zon2|" done < /tmp/browse_req.tmp