Parcour fichier et arret a la 1ere occurence
Résolu
evita8
Messages postés
32
Statut
Membre
-
evita8 Messages postés 32 Statut Membre -
evita8 Messages postés 32 Statut Membre -
Bonjour,
J'essaye de parcourir un fichier XSD ligne par ligne et de récupérer le nom de l'élément racine.
Dans le fichier XSD, voici la déclaration de l'élément racine :
<xsd:element name="Blabla" type="Blabla"/>
Que pensez vous de ma méthode :
- Parcourt du fichier avec une boucle while
- Test de la ligne en cour : verifier si elle est du type <xsd:element name="Blabla" type="Blabla"/>
- Arrêt a la premiere ocurence rencontrée (puisqu'il peut y avoir d'autre lignes commençant par "<xsd:element")
Mon script :
while read line
do
if [ "grep '^<xsd:element'" ] ; then
echo "$line"
else
echo "pas trouve"
fi
done < fichier.xsd
Problème : lors de l'execution le script recrache toutes les lignes du fichier XSD et non pas juste celles qui commencent par "<xsd:element"
Et comment faire pour arrêter la boucle des qu'une ligne contient "<xsd:element" ?
Merci !
J'essaye de parcourir un fichier XSD ligne par ligne et de récupérer le nom de l'élément racine.
Dans le fichier XSD, voici la déclaration de l'élément racine :
<xsd:element name="Blabla" type="Blabla"/>
Que pensez vous de ma méthode :
- Parcourt du fichier avec une boucle while
- Test de la ligne en cour : verifier si elle est du type <xsd:element name="Blabla" type="Blabla"/>
- Arrêt a la premiere ocurence rencontrée (puisqu'il peut y avoir d'autre lignes commençant par "<xsd:element")
Mon script :
while read line
do
if [ "grep '^<xsd:element'" ] ; then
echo "$line"
else
echo "pas trouve"
fi
done < fichier.xsd
Problème : lors de l'execution le script recrache toutes les lignes du fichier XSD et non pas juste celles qui commencent par "<xsd:element"
Et comment faire pour arrêter la boucle des qu'une ligne contient "<xsd:element" ?
Merci !
4 réponses
-
Salut,
#! /bin/bash grep -m 1 "^<xsd:element" $1 if [ $? = 1 ]; then echo "Pas trouvé" fi;-))
-
Hello !
La ligne de commande que tu m'as donné la dernière fois (recherche de la premiere occurence d'un motif dans un fichier : grep -m 1 " ^<xsd:element" $1) fonctionne trés bien chez moi mais sur l'odinateur de l'ecole je lis une erreure :
grep: option invalide -- m
Aurai tu une autre solution a mon problème ?
Merci !-
Re-
Ben déjà regarde le "man grep" pour voir les options disponibles (ou grep --help) et la version (grep --version).
Sinon essaye avec :sed -n '/^<xsd:element/{p;q}' fichier;-))
- Je n'arrive pas à recuperer ma ligne... Je ne vois pas du tout le problème !
pourtant la fonction "-n" existe sur cette version de unix (j'ai verifié dans le man)
ligne=$(sed -n '/<xsd:element/{p;q}' data/$2)
Le message d'erreur qu'il me renvoie :
sed: -e expression #1, char 19: Extra characters after command
-
-
Commence par enlever le "q" à la fin et vois si ça marche comme ça.
Si ça marche, essaie :sed -n '0,/<xsd:element/{/<xsd:element/p}' data/fichier.xsd;-)
-
<xsd:element name="Bibliotheque" type="Bibliotheque"/>
De cette ligne, je voudrai recuperer le nom Bibliotheque
Ma ligne (qui marchait chez moi mais ne fonctionne plus a l'ecole...) :
RACINE=$(cut -f2 -d '"' <<< $ligne) ne fonctionne plus
Il me renvoie :
tp4.sh: command substitution: line 1: syntax error near unexpected token `<<<'
tp4.sh: command substitution: line 1: `cut -f2 -d '"' <<< $ligne'
J'ai aussi essayé :
$ligne | cut -f2 -d '"'
Mais ça ne marche pas non plus
need help!
-
-
C'est bon, en enlevant "q" et les accollades la ligne fonctionne !! Merci beaucoup jipicy !!
J'ai encore enormément d'erreurs dans mon script... Je ne savais pas qu'il y avait autant de pb de portabilité sous unix