Posez votre question Signaler

Substring [Résolu]

OlivrT 139Messages postés 2 novembre 2009Date d'inscription 10 février 2012Dernière intervention - Dernière réponse le 13 nov. 2009 à 15:14
Bonjour,
j'essaye le code suivant qui est censé me retourner, à partir du 7ème caractère, 3 caractères.
Mais il me retourne une erreur : ${stringZ:3:7}: bad substitution
stringZ=abcABC123ABCabc
echo ${stringZ:3:7}
quelqu'un connait-il une fonction qui peut me retourner par exemple, une partie, les 3 caractères de gauche, les 2 de droite, ... ?
Lire la suite 

Substring »

11 réponses
Réponse
+0
moins plus
Salut,

Quel shell ? Quel système ?
Ajouter un commentaire
Réponse
+0
moins plus
Sous Unix
jipicy - 12 nov. 2009 à 16:52
Quel shell ?
Ajouter un commentaire
Réponse
+0
moins plus
?? Je sais pas ... Il y a un moyen de le savoir, une fonction à lancer ?
Ajouter un commentaire
Réponse
+0
moins plus
echo $SHELL
Ajouter un commentaire
Réponse
+0
moins plus
/bin/csh
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,

Il y a certaines choses qu'on ne peut pas faire sous tous les interpréteurs de commande, même si, globalement ils sont tous très puissants, ils ont leurs spécificités.

Je ne sais pas sous quel Unix tu es, mais est-ce que tu as la possibilité de passer en bash ?
Sous Solaris par exemple, on peut , sous Mac OS X également.
Mais sous d'autres Unix, je ne sais pas s'il est installé par défaut.

Mais peut-être es-tu obligé de faire ton script en csh ?

En fait, en bash, voici ce que donne ta syntaxe :

jonas@debian:~$ stringZ=abcABC123ABCabc
jonas@debian:~$ echo ${stringZ:3:7}
ABC123A

J'ai fait quelques essais pour bien décomposer.

Je compte après le 3eme
jonas@debian:~$ echo ${stringZ:3}
ABC123ABCabc

Je compte après le 7eme
jonas@debian:~$ echo ${stringZ:7}
23ABCabc

Ta manipulation, en bash...
jonas@debian:~$ echo ${stringZ:3:7}
ABC123A
Je compte 7 après avoir sauté 0 caractère (entre :: il y a "rien")
jonas@debian:~$ echo ${stringZ::7}
abcABC1

Je n'ai eu aucun message d'erreur, mais en csh il y a des différences significatives.


C shell,
Seychelles
ou
Sea Shell...

Moi aussi je vis sur une île !


A plus.
Ajouter un commentaire
Réponse
+0
moins plus
une manipulation indépendante du shell
$ echo $stringZ | awk '{print substr($1,4,7)}'
ABC123A
Ajouter un commentaire
Réponse
+0
moins plus
Merci dubceck,
ça fonctionne ! Cool,
mais comment je fais pour changer les valeurs de 4 et 7 pour respecter l'exemple ?
Comme ceci ? >

stringZ=abcABC123ABCabc
Depart=4
Longueur=7

result=$( echo $stringZ $Depart $Longueur | awk '{print substr($1,$2,$3)}' )
Ajouter un commentaire
Réponse
+0
moins plus
C'est ok, j'ai réessayé et ça fonctionne. merci ;-)
Ajouter un commentaire
Réponse
+0
moins plus
ou comme ça
stringZ=abcABC123ABCabc
Depart=4
Longueur=7
result=$(echo $stringZ | awk '{print substr($1,'"$Depart"','"$Longueur"')}')
ou
result=$(echo $stringZ  | awk -v d=$Depart -v l=$Longueur  '{print substr($1,d,l)}' )
ou
result=$(echo $stringZ  | awk  '{print substr($1,d,l)}' d=$Depart  l=$Longueur )
Ajouter un commentaire
Ce document intitulé « Substring » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook