[KSH] - Completer une chaine de caractere
Résolu
gorkimat
Messages postés
71
Statut
Membre
-
Athur -
Athur -
Bonjour à tous,
Je suis à la recherche d'une technique pour compléter avec un caractère (par exemple A), une chaîne de caractère si cette dernière a moins de 5 caractères.
Par exemple :
La seule solution que j'ai trouver semble être une véritable usine à gaz ;-)
Je vous remercie par avance pour votre aide,
Bonne fin de journée,
Mat
Je suis à la recherche d'une technique pour compléter avec un caractère (par exemple A), une chaîne de caractère si cette dernière a moins de 5 caractères.
Par exemple :
var1=12345 Résultat => 12345 var2=123 Résultat => 123AA var3=1 Résultat => 1AAAA
La seule solution que j'ai trouver semble être une véritable usine à gaz ;-)
Je vous remercie par avance pour votre aide,
Bonne fin de journée,
Mat
Configuration: Sun Solaris
3 réponses
-
Salut,
Avec "sed" peut être :[rep]$ echo "1" | sed ':loop; s/^.\{1,4\}$/&A/;t loop' 1AAAA [rep]$ echo "12" | sed ':loop; s/^.\{1,4\}$/&A/;t loop' 12AAA [rep]$ echo "123" | sed ':loop; s/^.\{1,4\}$/&A/;t loop' 123AA [rep]$ echo "1234" | sed ':loop; s/^.\{1,4\}$/&A/;t loop' 1234A [rep]$ echo "12345" | sed ':loop; s/^.\{1,4\}$/&A/;t loop' 12345;-))
-
Salut jipicy,
Tout d'abord merci pour ta réponse.
C'est vrai que mes exemples était très mauvais. En fait les 1,2,3,4,5 peuvent être n'importe quel caractères.
J'ai repris ce que tu m'a conseiller, mais j'ai un message d'erreur sur loop "a priori".
bash-3.00$ ksh $ echo "MERC" | sed ':loop; s/^.\{A,Z}$/&I/;t loop' Label too long: :loop; s/^.\{A,Z}$/&I/;t loop
Aurais-tu une idée ?
Merci,
Mat
-
-
Pour ton histoire de label, il suffit de remplacer "loop" par la lettre que tu veux :
sed ':l; s/^.\{1,4\}$/&A/;t l'Par contre ce que tu veux faire après ne rentre plus dans l'exemple que je t'ai donné. Dans mon exemple on finit de remplir la chaîne avec un caractère quelconque tant que la longueur de cette chaîne n'est pas égale à 5. Donc on se base sur un nombre précis...
Ton exemple avec les lettres ne peut pas marcher ;-((
-
Salut,
D'accord, je n'avais pas capter que {1,4} signifiait "reperté 4 fois".
Mais comme cela ca ne pourrais pas marcher ?
echo "MERC" | sed ':l; s/^.\{1,4\}$/&I/;t l'
Et puis visiblement, le remplacement de 'loop' par 'l' n'a pas eut l'air de fonctionner ;-((
$ echo "MERC" | sed ':l; s/^.\{1,4\}$/&I/;t l' Label too long: :l; s/^.\{1,4\}$/&I/;t l
Merci,
Mat -
-
-
-
Bonjour,
J'ai un soucis équivalent, sauf que je dois compléter la chaine à gauche et non à droite.
echo "MERC" | sed -e :z -e 's/^.\{1,4\}$/&I/;tz'
en gros ce que je cherche à avoir ce n'est pas MERCI mais IMERC
d'avance merci pour vos réponse , je n'arrive pas à identifier le paramètre dans la commande que je dois changer ....
merci
-
-
hello
var=${var1}AAAAA
printf "%5s" $var