Rechercher : dans
Par :

Récupérer les 3 premiers caractères du nom du

Dernière réponse le 15 oct 2007 à 11:59:00 szcz2007, le 15 oct 2007 à 10:04:14 
 Signaler ce message aux modérateurs

Bonjour,

Il faut que j'écrive un script en SHELL.
comment je peux faire pour récupérer les 3 premiers caractères du nom du fichier que je dois lire.

Configuration: Windows XP
Internet Explorer 6.0

1

jipicy, le 15 oct 2007 à 10:09:09

Salut,

$ var="bonjour"
$ echo ${var:0:3}
bon
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

2

szcz2007, le 15 oct 2007 à 10:58:15

J'ai un peu de mal :
j'ai du louper un truc
j'ai écrit dans mon script :
var="papa"
echo {$var:0:1}

résultat = {papa:0:1}

Répondre à szcz2007

3

lami20j, le 15 oct 2007 à 11:02:50

Salut,

attention où tu mets les accolades

echo {$var:0:1} - incorrect, c'est ${}

echo ${var:0:1} 
--
lami20j

Répondre à lami20j

4

szcz2007, le 15 oct 2007 à 11:08:27

Au secours !!
dans le script j'ai :
var="papa"
echo ${var:0:1}


résultat
${var:0:1}: bad substitution

Répondre à szcz2007

5

jipicy, le 15 oct 2007 à 11:13:18

Re-

Essaye alors :

expr "$var" : '\(...\)'
Tu veux récupérer 1 ou 3 caractères ?
Affiches-nous ton script en entier s'il te plaît, merci.
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy

6

szcz2007, le 15 oct 2007 à 11:28:27

Voici mon script, je dois afficher les 3 caractères mais j'ai compris le principe...par contre j'ai pas tout compris pour la ligne de commande expr "$var" : '\(...\)' ==> ?
J'ai eu 30 mn de formation sur le shell...alors je suis un peu perdu...
merci pour votre aide...


if [ $nbfichier -ne 0 ]
then
for Fic in `ls R*`
do
echo "fichier trouvé ==>$Fic"
var="papa"
echo ${var:0:3}
exit 0
done
else
echo "Fichier $Fic NON PRESENT"
echo "nb fichier : $nbfichier"
exit 16
fi

Répondre à szcz2007

7

dubcek, le 15 oct 2007 à 11:57:33

Mettre
#!/bin/bash
en première ligne

Répondre à dubcek

8

 jipicy, le 15 oct 2007 à 11:59:00

[tmpfs]$ ls -1

Robert.txt
Roger.txt
Romain.txt
rose.txt
Roxane.txt
roxy.txt

[tmpfs]$ for fich in $(ls R*);do echo "${fich} => ${fich:0:3}";done

Robert.txt => Rob
Roger.txt => Rog
Romain.txt => Rom
Roxane.txt => Rox

[tmpfs]$
;-))
Z'@+...che.
JP : Zen, my Nuggets ! ;-)
Le savoir n'est bon que s'il est partagé.

Répondre à jipicy
Collection CommentÇaMarche.net