Bonjour,
Comment faut-il procéder pour incrémenter un caractère ? J'entends par là que quand je veux incrémenter A c'est pour avoir B...
et ceci en ksh
Merci.
Version imprimable
Bonjour,
Comment faut-il procéder pour incrémenter un caractère ? J'entends par là que quand je veux incrémenter A c'est pour avoir B...
et ceci en ksh
Merci.
Un caractère quelconque ? Ou juste une lettre ?
Dans le cas général, et sur 8 bits :
Code:tr '\0-\377' '\1-\377\0'
Et Quand vous avez "Z" vous voulez obtenir "A" ?
Pouriez vous etre plus claire sur cette demonstration , :oops: en l'etat je ne voit pas pas comment vous obtenez "B" à partir d'une variable egale à "A" 8OCitation:
Envoyé par LLB
Merci à vous
Il a dit incrémenter un caractère, pas incrémenter une lettre. rcyril, il faut préciser l'énoncé si ma solution ne convient pas (j'ai suivi le comportement du C, en fait).
S'il y a que des majuscules sans accent :
Code:tr 'A-Z' 'B-ZA'
Tu connais le fonctionnement de tr ?
On donne deux listes de caractères, et tr remplace chaque caractère de la 1ère liste par celui de la 2e liste (à la même position).
Ce qui correspond bien à l'incrément. Maintenant, transpose cet exemple entre A et F sur l'ensemble des caractères, de \0 à \377 (= 255, le maximum sur 1 octet).Code:
1
2
3 tr 'A-F' 'B-FA' est équivalent à tr 'ABCDEF' 'BCDEFA'
Je m'interesse à ce Post car j'ai un problème assez similaire
:bug: Aussi , j'ai essayé ce qui suit (HP-UX 11 en Ksh)
resultat = "B" OK :lol:Code:echo "A" | tr 'A-Z' 'B-ZA'
resultat = "¤" KO :roll:Code:echo "B" | tr 'A-Z' 'B-ZA'
Que donne la commande suivante chez vous ?
Code:echo "A" | tr '\0-\377' '\1-\377\0'
Merci de votre aide
Cordialment
@rgoët
Chez moi, tout fonctionne parfaitement.
Le dernier exemple m'affiche bien B, suivi d'une tabulation verticale (\v, le caractère après le \n inséré par echo).
J'avoue ne pas trop comprendre d'où peut venir le problème. Peut-être une version de tr exotique ?
Mon tr :
Au pire, s'il faut se limiter à l'alphabet, il reste la possibilité de faire l'expansion à la main (et lister toutes les lettres).Code:tr (GNU coreutils) 5.97
Effectivement :Citation:
Envoyé par LLB
En opérant de la sorte , le resultat final est celui escomptéCode:tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'BCDEFGHIJKLMNOPQRSTUVWXYZA'
Merci à vous LLB
llb t'as solution me convient presque sauf j'ai des carateres espaces apres le changement de la lettre. tu sais d'ou ca peut venir ?
essayez ca:
test=`echo "A" | tr '\0-\377' '\1-\377\0' `
echo $test
test n'est pas = à B mais à B avec des espaces pourquoi ?
Oui, comme je l'ai dit dans une réponse. Par défaut, echo affiche un retour à la ligne. Ce retour à la ligne est "incrémenté" lui aussi. Utilise echo -n pour ne pas l'avoir.
meric pour l'aide je considere comme résolu