3e post de demande d'aide en espérant que ce sera la dernière fois. Mes
souvenirs de shell sont un peu plus lointains que je ne le croyais et
certains questionnements se traduisent par un état de purée en guise de
réponse :) Il faut dire aussi que je n'ai vraiment pas le temps de faire des
recherches ni des tests malgré toutes les bonnes adresses de sites que j'ai
récoltées.
Donc voici de nouveaux problèmes à résoudre:
1) Comment accéder à un élément de liste car si ce n'est pas déclaré sous
forme de tableau ça ne marche pas. Autrement dit l'appel à ${tab[i]} ne
fonctionne que si j'ai déclaré:
tab[1]="a"
tab[2]="b"
etc
mais moi je voudrais déclarer des:
tab="a b c d e"
et accéder quand même à tab[i], sauf que ça ne fonctionne pas (et ce n'est
probablement pas fait pour, mais là aussi bonjour la recherche d'exemples
sur le net. Je dois confondre avec csh peut-être).
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _
comporte 3 caractères quelconques et qui se termine par 2 chiffres.
Je sais faire le match sur une variable contenant un nom de fichier en
utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un
ls du répertoire pour rediriger directement dans un tableau la liste de tous
les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux
pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du
langage ;)
mais moi je voudrais déclarer des: tab="a b c d e"
utiliser la syntaxe suivante set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _ comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp", à ne pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Je sais faire le match sur une variable contenant un nom de fichier en utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un ls du répertoire pour rediriger directement dans un tableau la liste de tous les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du langage ;)
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
(attention cependant à la limitation du nombre d'élément dans les tableaux qui est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
-- Gilles Pion
Ref: <4d138f7c$0$18113$426a34cc@news.free.fr> de mulan
mais moi je voudrais déclarer des:
tab="a b c d e"
utiliser la syntaxe suivante
set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _
comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp", à ne
pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Je sais faire le match sur une variable contenant un nom de fichier en
utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un
ls du répertoire pour rediriger directement dans un tableau la liste de tous
les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux
pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du
langage ;)
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
(attention cependant à la limitation du nombre d'élément dans les tableaux qui
est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
mais moi je voudrais déclarer des: tab="a b c d e"
utiliser la syntaxe suivante set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _ comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp", à ne pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Je sais faire le match sur une variable contenant un nom de fichier en utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un ls du répertoire pour rediriger directement dans un tableau la liste de tous les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du langage ;)
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
(attention cependant à la limitation du nombre d'élément dans les tableaux qui est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
-- Gilles Pion
mulan
"Gilles Pion" a écrit dans le message de news:
Ref: <4d138f7c$0$18113$ de mulan
mais moi je voudrais déclarer des: tab="a b c d e"
utiliser la syntaxe suivante set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _ comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp", à ne pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Je sais faire le match sur une variable contenant un nom de fichier en utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un ls du répertoire pour rediriger directement dans un tableau la liste de tous les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du langage ;)
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
(attention cependant à la limitation du nombre d'élément dans les tableaux qui est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
Pas grave je n'irai pas jusque là :-)
"Gilles Pion" <nosuchuser@nosuchdomain.com> a écrit dans le message de news:
au77h6l0jtme46b1f7ovb5puqapul0kfif@4ax.com...
Ref: <4d138f7c$0$18113$426a34cc@news.free.fr> de mulan
mais moi je voudrais déclarer des:
tab="a b c d e"
utiliser la syntaxe suivante
set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _
comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp",
à ne
pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Ben justement c'était pour donner à expr qui mange de l'expression
régulière. A la limite un '?' le dérangerait davantage je pense.
Je sais faire le match sur une variable contenant un nom de fichier en
utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie
d'un
ls du répertoire pour rediriger directement dans un tableau la liste de
tous
les fichiers qui correspondent à ce modèle. J'en appelle encore une fois
aux
pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du
langage ;)
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
(attention cependant à la limitation du nombre d'élément dans les tableaux
qui
est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
mais moi je voudrais déclarer des: tab="a b c d e"
utiliser la syntaxe suivante set -A tab a b c d e
2) Matching sur une liste d'élements
Je déclare un modèle de nom de fichier du genre:
MODELE="xxx_..._[0_9][0-9]"
Autrement dit, tout fichier commençant par le mot xxx, qui après le _ comporte 3 caractères quelconques et qui se termine par 2 chiffres.
le "." pour matcher un caractère quelconque est utilisé par les "regexp", à ne pas confondre avec les "wildcards" qu'utilise le shell
il faut donc utiliser dans ce cas le caractère "?"
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Je sais faire le match sur une variable contenant un nom de fichier en utilisant expr: c'est ok. Mais je n'arrive pas à le coder sur la sortie d'un ls du répertoire pour rediriger directement dans un tableau la liste de tous les fichiers qui correspondent à ce modèle. J'en appelle encore une fois aux pros de ce forum... Et je rappelle que je n'ai toujours pas eu le choix du langage ;)
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
(attention cependant à la limitation du nombre d'élément dans les tableaux qui est de 4096 en pour le ksh88, je ne connais pas la limite pour ksh93)
Pas grave je n'irai pas jusque là :-)
Gilles Pion
Ref: <4d13a8ac$0$969$ de mulan
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
-- Gilles Pion
Ref: <4d13a8ac$0$969$426a34cc@news.free.fr> de mulan
Ben justement c'était pour donner à expr qui mange de l'expression
régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de
fichiers qui "matchent" l'expression expression régulière (l'utilisation de
wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est
ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]"
set -A tab $(ls | grep "$MODELE")
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
-- Gilles Pion
Cyrille Lefevre
Bonjour,
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
Bonjour,
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces
exercices de noël... ? mais ce n'est que mon avis :-)
Cordialement,
Cyrille Lefevre.
--
mailto:Cyrille.Lefevre-news%nospam@laposte.net.invalid
supprimer "%nospam% et ".invalid" pour me repondre.
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
Cordialement,
Cyrille Lefevre. -- mailto:Cyrille.Lefevre-news% supprimer "%nospam% et ".invalid" pour me repondre.
mulan
"Gilles Pion" a écrit dans le message de news:
Ref: <4d13a8ac$0$969$ de mulan
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Parce que je connais, que j'aime bien et que je ne connais pas tout. C'est pour ça que je viens poser des questions ici.
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Heeeeuuuuu moi aussi je capte pas tout dans tes explications.
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas)
Faux, ça ne me convient pas que si j'utilise expr, oeuf corse.
contenue dans la variable "MODELE", c'est ça?
Toutafé.
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ok j'essaierai merci.
"Gilles Pion" <nosuchuser@nosuchdomain.com> a écrit dans le message de news:
16e7h6tpptg3aoqh4o2c1fiavnfsqobeqr@4ax.com...
Ref: <4d13a8ac$0$969$426a34cc@news.free.fr> de mulan
Ben justement c'était pour donner à expr qui mange de l'expression
régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser
"expr"
Parce que je connais, que j'aime bien et que je ne connais pas tout. C'est
pour ça que je viens poser des questions ici.
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Heeeeuuuuu moi aussi je capte pas tout dans tes explications.
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms
de
fichiers qui "matchent" l'expression expression régulière (l'utilisation
de
wildcards shells ne te convenant pas)
Faux, ça ne me convient pas que si j'utilise expr, oeuf corse.
contenue dans la variable "MODELE", c'est
ça?
Toutafé.
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]"
set -A tab $(ls | grep "$MODELE")
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Parce que je connais, que j'aime bien et que je ne connais pas tout. C'est pour ça que je viens poser des questions ici.
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Heeeeuuuuu moi aussi je capte pas tout dans tes explications.
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas)
Faux, ça ne me convient pas que si j'utilise expr, oeuf corse.
contenue dans la variable "MODELE", c'est ça?
Toutafé.
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ok j'essaierai merci.
Stephane CHAZELAS
2010-12-23, 22:11(+01), Gilles Pion:
Ref: <4d13a8ac$0$969$ de mulan
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f IFS=' ' set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des newlines.
set -A xxx_???_[0-9][0-9]
me semble beaucoup plus approprié
-- Stephane
2010-12-23, 22:11(+01), Gilles Pion:
Ref: <4d13a8ac$0$969$426a34cc@news.free.fr> de mulan
Ben justement c'était pour donner à expr qui mange de l'expression
régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de
fichiers qui "matchent" l'expression expression régulière (l'utilisation de
wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est
ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]"
set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f
IFS='
'
set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des
newlines.
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f IFS=' ' set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des newlines.
set -A xxx_???_[0-9][0-9]
me semble beaucoup plus approprié
-- Stephane
mulan
"Stephane CHAZELAS" a écrit dans le message de news:
2010-12-23, 22:11(+01), Gilles Pion:
Ref: <4d13a8ac$0$969$ de mulan
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f IFS=' ' set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des newlines.
set -A xxx_???_[0-9][0-9]
me semble beaucoup plus approprié
Je ne me rappelle plus si j'ai essayé d'utiliser les '?' sur un ls. Parce que je travaille sous émulateur et que déjà ce dernier m'envoie paître si je tente par exemple un ls *.{extension1,extension2} qui fonctionne parfaitement sur un vrai unix. Ce n'est pas grave parce que je n'en ai pas besoin pour mon taf actuel.
Après, je ne voudrais me battre avec personne. Mais j'utilise depuis toujours des '.' avec expr et des '?' dans une commande directe type ls et je ne pense pas trop me tromper en faisant cela. Pour le set -A, c'est plus une découverte parce que je suis loin de connaître toutes les possibilités de la commande set. Dès que possible je testerai vos réponses. Merci à tout le monde.
"Stephane CHAZELAS" <stephane_chazelas@yahoo.fr> a écrit dans le message de
news: slrnih8to4.563.stephane.chazelas@spam.is.invalid...
2010-12-23, 22:11(+01), Gilles Pion:
Ref: <4d13a8ac$0$969$426a34cc@news.free.fr> de mulan
Ben justement c'était pour donner à expr qui mange de l'expression
régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser
"expr"
Pour ma part je m'y prendrais simplement comme ceci:
MODELE="xxx_???_[0_9][0-9]"
set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms
de
fichiers qui "matchent" l'expression expression régulière (l'utilisation
de
wildcards shells ne te convenant pas) contenue dans la variable "MODELE",
c'est
ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]"
set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f
IFS='
'
set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des
newlines.
set -A xxx_???_[0-9][0-9]
me semble beaucoup plus approprié
Je ne me rappelle plus si j'ai essayé d'utiliser les '?' sur un ls. Parce
que je travaille sous émulateur et que déjà ce dernier m'envoie paître si je
tente par exemple un ls *.{extension1,extension2} qui fonctionne
parfaitement sur un vrai unix. Ce n'est pas grave parce que je n'en ai pas
besoin pour mon taf actuel.
Après, je ne voudrais me battre avec personne. Mais j'utilise depuis
toujours des '.' avec expr et des '?' dans une commande directe type ls et
je ne pense pas trop me tromper en faisant cela. Pour le set -A, c'est plus
une découverte parce que je suis loin de connaître toutes les possibilités
de la commande set. Dès que possible je testerai vos réponses. Merci à tout
le monde.
"Stephane CHAZELAS" a écrit dans le message de news:
2010-12-23, 22:11(+01), Gilles Pion:
Ref: <4d13a8ac$0$969$ de mulan
Ben justement c'était pour donner à expr qui mange de l'expression régulière. A la limite un '?' le dérangerait davantage je pense.
Franchement je ne comprend pas très bien pourquoi tu tiens à utiliser "expr"
Pour ma part je m'y prendrais simplement comme ceci: MODELE="xxx_???_[0_9][0-9]" set -A tab $MODELE
D'accord mais il est où le parcours du répertoire ?
Essaie d'abord, tu verras que ça marche.
(Sais-tu que tu n'est pas toujours facile a comprendre?)
Mais si je comprend bien tu veux que le tableau "tab" contienne les noms de fichiers qui "matchent" l'expression expression régulière (l'utilisation de wildcards shells ne te convenant pas) contenue dans la variable "MODELE", c'est ça?
Voici la solution alors, avec une "vraie" regexp, et sans "expr":
MODELE="xxx_..._[0_9][0-9]" set -A tab $(ls | grep "$MODELE")
Ca serait plutot:
set -f IFS=' ' set -A tab $(ls | grep -xe "$MODELE")
qui ne marche pas s'il y a des fichiers dont le nom contient des newlines.
set -A xxx_???_[0-9][0-9]
me semble beaucoup plus approprié
Je ne me rappelle plus si j'ai essayé d'utiliser les '?' sur un ls. Parce que je travaille sous émulateur et que déjà ce dernier m'envoie paître si je tente par exemple un ls *.{extension1,extension2} qui fonctionne parfaitement sur un vrai unix. Ce n'est pas grave parce que je n'en ai pas besoin pour mon taf actuel.
Après, je ne voudrais me battre avec personne. Mais j'utilise depuis toujours des '.' avec expr et des '?' dans une commande directe type ls et je ne pense pas trop me tromper en faisant cela. Pour le set -A, c'est plus une découverte parce que je suis loin de connaître toutes les possibilités de la commande set. Dès que possible je testerai vos réponses. Merci à tout le monde.
asl
Le 23-12-2010, Cyrille Lefevre <cyrille.lefevre-news% a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
Je suis plutôt d'accord...
Arnaud.
Le 23-12-2010, Cyrille Lefevre <cyrille.lefevre-news%nospam@laposte.net.invalid> a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre
ces exercices de noël... ? mais ce n'est que mon avis :-)
Cyrille Lefevre , dans le message <if0hu5$1l93$, a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
D'un autre côté, s'il y a des profs pour donner des exercices en ksh à notre époque, ils méritent bien d'être traités comme ça.
mulan
a écrit dans le message de news:
Le 23-12-2010, Cyrille Lefevre <cyrille.lefevre-news% a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
Je suis plutôt d'accord...
Je suis plutôt pas d'accord... Quand on ne sait pas, on évite d'accuser à tort et à travers. Je ne peux pas prouver que je ne suis pas une étudiante mais vous ne risquez pas d'arriver à prouver le contraire alors le mieux que vous avez à faire c'est d'éviter de polluer inutilement ce forum.
<asl@launay.org> a écrit dans le message de news:
slrnihae1t.bko.asl@pomme.cusae.net...
Le 23-12-2010, Cyrille Lefevre
<cyrille.lefevre-news%nospam@laposte.net.invalid> a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre
ces exercices de noël... ? mais ce n'est que mon avis :-)
Je suis plutôt d'accord...
Je suis plutôt pas d'accord... Quand on ne sait pas, on évite d'accuser à
tort et à travers. Je ne peux pas prouver que je ne suis pas une étudiante
mais vous ne risquez pas d'arriver à prouver le contraire alors le mieux que
vous avez à faire c'est d'éviter de polluer inutilement ce forum.
Le 23-12-2010, Cyrille Lefevre <cyrille.lefevre-news% a écrit :
perso, j'm'demande si vous n'êtes pas en train de lui résoudre ces exercices de noël... ? mais ce n'est que mon avis :-)
Je suis plutôt d'accord...
Je suis plutôt pas d'accord... Quand on ne sait pas, on évite d'accuser à tort et à travers. Je ne peux pas prouver que je ne suis pas une étudiante mais vous ne risquez pas d'arriver à prouver le contraire alors le mieux que vous avez à faire c'est d'éviter de polluer inutilement ce forum.