Problème Unix

Fermé
Kiwi - 10 août 2002 à 14:14
 Kiwi - 12 août 2002 à 01:07
Bonjour,

Débutant sous Unix je me casse la tête depuis des heures pour savoir pourquoi $v3 , dans les lignes suivantes, ne me sort rien alors que $v1 et $v2 fonctionnent bien.

Nota : Un enregistrement de $string est constitué comme suit :
(numéro, prénom(s), nom)
ex : 12345678 Jean Pierre,Martin

while read line
do
v1=$(expr "$line" : '\([0-9]*\).*')
echo $v1

v2=$(expr "$line" : '[0-9]*\(.*\),')
echo $v2

v3=$(expr "$line" : ',\(.*\)')
# j'ai aussi essayé v3=$(expr "$line" : ',\([a-zA-Z]*\)') echo $v3

done < $string

Pour résumer, j'extrais bien le numéro et le(s) prénom(s), mais rien à faire pour extraire le nom. Quelqu'un peut-il m'expliquer mon (mes ?) erreurs ?

Merci d'avance

1 réponse

je vois pas trop ton erreur non plus, peut être les espace

cela dit je me demande un truc, est ce toi qui a crée ce fichier de donnée?

car si c'est le cas je te conseille de faire autrement, je m'explique:
il bien plus simple de faire des champs séparer par un caractère spécifique, par exemple:
16468:Jean Pierre:Martin

comme ça pour récupère chacun des champs tu fais:
cut -d ':' -f 1
cut -d ':' -f 2
cut -d ':' -f 3
et voila, plus besoin de regex....
http://dpobel.free.fr/man/html/html.1/cut.htm

et puis si tu peux pas avoir directement le fichier comme présenté plus haut tu peux en faire une copie est le transformé avec sed
http://dpobel.free.fr/man/html/html.1/sed.htm

désolé de ne pouvoir t'aider plus...

tigrou - http://dpobel.free.fr/
0
Merci pour le coup de main.

J'ai fini par résoudre le problème, et c'était principalement une question de syntaxe.

Ce n'est pas moi qui avait créé le fichier de données, et le but du jeu était justement de mettre ses enregistrements sous une forme plus "correcte", avec les mêmes séparateurs partout, comme tu me l'as conseillé.

Encore une fois merci.

Kiwi
0