Rechercher : dans
Par :

Substring

Dernière réponse le 13 nov 2009 à 15:14:58 OlivrT, le 12 nov 2009 à 16:22:37 
 Signaler ce message aux modérateurs

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, ... ?

Configuration: Windows XP
Firefox 3.5.5

Meilleures réponses pour « Substring » dans :
Mythe - On peut effacer un CD-R ou un DVD-R VoirMythe On peut effacer un CD-R ou un DVD-R Réalité FAUX. Explications Les propriétés chimiques et physiques du substrat des CD-R, DVD+/-R font que le gravage n'est pas réversible. Une fois les données gravées, on ne peut donc pas les...
Oracle - Détection des objets débordant par rapport au MAXEXTENT VoirPour détecter les objets nécessitant une défragmentation à cause d'un débordement par rapport à la valeur de la variable MAXEXTENT prédéfinie, il suffit de lancer la commande suivante : SELECT SUBSTR(owner||'.'||segment_name,1,50) OBJECT, ...
Javascript - L'objet String VoirLes particularités de l'objet String string est un mot anglais qui signifie "chaîne", il s'agit en fait de chaîne de caractères. L'objet String est un objet qui contient un certain nombre de propriétés et de méthodes permettant la manipulation...

1

jipicy, le 12 nov 2009 à 16:31:05

Salut,

Quel shell ? Quel système ?
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

OlivrT, le 12 nov 2009 à 16:47:49

Sous Unix

Répondre à OlivrT

3

jipicy, le 12 nov 2009 à 16:52:29

Quel shell ?
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

OlivrT, le 12 nov 2009 à 17:07:28

?? Je sais pas ... Il y a un moyen de le savoir, une fonction à lancer ?

Répondre à OlivrT

5

dubcek, le 12 nov 2009 à 17:09:47

Echo $SHELL

Répondre à dubcek

6

OlivrT, le 13 nov 2009 à 08:04:03

/bin/csh

Répondre à OlivrT

7

jivef, le 13 nov 2009 à 08:23:54

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.


Une idée reçue est souvent une idée morte.

Répondre à jivef

8

dubcek, le 13 nov 2009 à 08:44:38

Une manipulation indépendante du shell
$ echo $stringZ | awk '{print substr($1,4,7)}'
ABC123A

Répondre à dubcek

9

OlivrT, le 13 nov 2009 à 15:03:32

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)}' )

Répondre à OlivrT

10

OlivrT, le 13 nov 2009 à 15:14:52

C'est ok, j'ai réessayé et ça fonctionne. merci ;-)

Répondre à OlivrT

11

 dubcek, le 13 nov 2009 à 15:14:58

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 )

Répondre à dubcek
Collection CommentÇaMarche.net