Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2007, 12h57   #1
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 2
Points : 2
Par défaut incrémenter caractère en ksh

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.
rcyril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h27   #2
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
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'
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h43   #3
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Et Quand vous avez "Z" vous voulez obtenir "A" ?
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h48   #4
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Citation:
Envoyé par LLB
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'
Pouriez vous etre plus claire sur cette demonstration , en l'etat je ne voit pas pas comment vous obtenez "B" à partir d'une variable egale à "A"

Merci à vous
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h49   #5
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
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 :
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 15h52   #6
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
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).

Code :
1
2
3
tr 'A-F' 'B-FA'
est équivalent à
tr 'ABCDEF' 'BCDEFA'
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).
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 16h18   #7
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Je m'interesse à ce Post car j'ai un problème assez similaire

Aussi , j'ai essayé ce qui suit (HP-UX 11 en Ksh)
Code :
echo "A" | tr 'A-Z' 'B-ZA'
resultat = "B" OK
Code :
echo "B" | tr 'A-Z' 'B-ZA'
resultat = "¤" KO

Que donne la commande suivante chez vous ?
Code :
echo "A" | tr '\0-\377' '\1-\377\0'

Merci de votre aide
Cordialment
@rgoët
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 16h30   #8
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
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 :
Code :
tr (GNU coreutils) 5.97
Au pire, s'il faut se limiter à l'alphabet, il reste la possibilité de faire l'expansion à la main (et lister toutes les lettres).
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 16h34   #9
Membre éprouvé
 
Avatar de argoet
 
Inscription : mai 2002
Messages : 535
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 535
Points : 461
Points : 461
Citation:
Envoyé par LLB
Au pire, s'il faut se limiter à l'alphabet, il reste la possibilité de faire l'expansion à la main (et lister toutes les lettres).
Effectivement :
Code :
tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'BCDEFGHIJKLMNOPQRSTUVWXYZA'
En opérant de la sorte , le resultat final est celui escompté
Merci à vous LLB
__________________
Signé : Capitaine Jean-Luc Picard
argoet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 17h18   #10
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 2
Points : 2
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 ?
rcyril est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 17h35   #11
LLB
Membre Expert
 
Inscription : mars 2002
Messages : 946
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 946
Points : 1 085
Points : 1 085
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.
LLB est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2007, 17h37   #12
Invité de passage
 
Inscription : août 2007
Messages : 5
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 5
Points : 2
Points : 2
meric pour l'aide je considere comme résolu
rcyril est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h35.


 
 
 
 
Partenaires

Hébergement Web