Votre navigateur est obsolète. Téléchargez un navigateur moderne, par exemple FireFox.
Léa-Linux : Forum
Le forum de Léa abrite des discussions autour des Logiciels libres.
Syndication
  • RSS ForumForum complet
  • RSS Forum - DéveloppementForum - Développement
  • RSS Forum - Développement - 320552Cette discussion

Pour poser vos questions sur les scripts shell, le Perl, le C, etc... Attention : nous ne sommes pas des spécialistes du dev, ce forum est juste pour de petites aides ponctuelles concernant le développement et les outils de développement.

Important : quand vous posez une question, n'oubliez pas de nous donner les indications suffisantes pour que nous puissions répondre. En effet, la divination n'est pas le fort du Linuxien averti. Pour une meilleure compréhension, le bon usage de la grammaire et de l'orthographe est fortement encouragé. En particulier, le langage SMS est à éviter absolument. En cas d'abus, il pourra être censuré sans autre forme de procès.
Les messages dont le contenu est illégal (incitant à la haine - raciale ou autre, diffamant), ou dont le contenu est sans rapport avec le sujet du forum, ou qui sont parfaitement stupides ou hors sujet seront supprimés sans pitié. Il pourra même être fait appel au fournisseur d'accès du coupable pour faire cesser ses agissements.
» Index du forum » Développement » Recuperation à partir de fichiers
Aller à la discussion: PrécédentSuivante
Action: Nouveau sujetChercherS'authentifier
Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 10 avril 2007 à 11:00

Bonjour,

pour ceux qui connaissent ce langage, j'ai des fichiers .SAS que je souhaiterai "décortiquer" un peu...

Le fait qu'ils soient ecris en SAS importe peu, voire pas du tout, ça s'ouvre tres bien comme un fichier .txt


Grosso modo, je voudrais récupérer les requetes SQL qui se trouvent dans le tas de code.

J'ai pu remarquer que ces requetes prenaient cet aspet:

connect to oracle ( -----------)
create table ----------- as select -------- from connection to oracle
(
select ...
from ...
where ...
) ;


en gras, ce sont les 'balises' que j'ai relevées qui entoure les requetes.

En soit meme, ça me parait bete comme tout, mais le hic, c'est que je suis pas du tout a l'aise avec les scripts bash / awk / sed ...

Je peux avoir plusieurs bout de code comme ça dans un fichier, et les indentations, espaces, retour à la ligne, ... ne sont pas toujours respectés ni les memes du coup...

je peux avoir du:
-> from connection to oracle (
-> from connection to oracle(
-> from connection to oracle
(select
-> ...

de meme, au niveau de la balise de fin, je ne peux pas m'appuyer sur le ';' car je peux avoir du code dans les requetes, ce qui me place des ';' au milieu.
et je peux avoir du texte entre le ')' et le ';' dans ce style là:
) {[A-Za-z]|' '|' (retour à la ligne) ' }*

Et lorsque c'est un code imbriqué dans la requete, le texte sera toujours %end mais avec des espaces et retours à la ligne possible...


Quelqu'un pourrait m'aider là dessus? (avec des explications sur les commandes du sed/awk/... parce que les \/^ et tout, je comprend pas du tout :/ )

Re: Recuperation à partir de fichiers
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 10 avril 2007 à 14:07

Un script (fait à la louche, sans tester) :
#!/usr/bin/awk -f

get_requete() {
   do {
      getline
      printf("%s ", $0)
   } while ($0 != ");")
   printf("\n")
}

/from connexion to oracle/ {
   get_requete $0
}


Tu devrais avoir une requête SQL par ligne.
Pour utiliser le script, tu fais "./script.awk < fichiser.SAS"

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 10 avril 2007 à 14:26

Hum...

Le probleme, c'est que ça peut finir par un simple

);


Mais ça peut aussi finir par

)blablabla;


et pour corser l'affaire, ce " blablabla " doit etre different de " %end "

Re: Recuperation à partir de fichiers
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 10 avril 2007 à 17:51

Ca fait longtemps que je n'ai pas touché à awk, donc il y aura peut être (et même sûrement) des erreurs de syntaxe. Pour la fonction, tu peux transformer le do {... }while par :
while (true) {
   printf("%s ", $0)
   if ( ($0 == "^).*;$") && ($0 !~ "%end" ) ) {
      printf("\n");
      return
   }
}


^).*;$ signifie : ligne qui commence par ) et qui finit par ; (sans espace ni avant le ), ni après le ;)

Pour la fonction, il faut écrire :
function get_requete() {
...
}


Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 11 avril 2007 à 10:29

image : fou

j'ai du virer les parentheses dans la declaration de la fonction, et il me bloque sur l'accolade ouvrante apres le if :/

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 11 avril 2007 à 15:44

Autant pour moi, l'erreur générée était un oubli de ma part...



sinon, j'ai un "vrai" soucis:

awk: Cannot read the value of get_requete. It is a function


ca se produit lors de l'appel get_requete $0

Re: Recuperation à partir de fichiers
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 11 avril 2007 à 16:34

transforme le return en return 0 et rajoute juste avant l'accolade fermente de la fonction un return 0 aussi.

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 12 avril 2007 à 09:04

Ca change pas :s

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 12 avril 2007 à 09:09

j'ai resolu l'erreur, en mettant dans l'appel de fonction des parenthese

get_requete() au lieu de get_requete $0

Par contre, en attendant, j'avais pas vraiment fait la fonction get_requete, pour resoudre le soucis, elle n'est qu'un simple print

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 12 avril 2007 à 10:47

il change jamais de $0 image : moue
c'est toujours la meme ligne en fait...

Re: Recuperation à partir de fichiers
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 12 avril 2007 à 13:46

Dans le while, j'ai oublié de remettre le getline pour lire la prochaine ligne image : ange

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Re: Recuperation à partir de fichiers
Auteur: _Moa_ (IP enregistrée)
Date: le 12 avril 2007 à 16:36

mirki ^^


maintenant, je passe à une autre etape, pas moyen de faire parler mon ami google :/ , je souhaiterai faire un bout de script qui recupere le nombre d'occurence d'un mot dans tous mes fichiers...
en ligne de commande, le
grep -i 'MOT' *.ext \ wc -l
est super, par contre, je trouve pas comment le mettre dans une variable au sein d'un script...

j'avais songé tout betement à
$var=[grep -i 'MOT' *.ext \ wc -l]
mais apaprement, cela aurait été trop simple, et ça va pas :/

Re: Recuperation à partir de fichiers
Avatar
Auteur: oudoubah (IP enregistrée)
Date: le 12 avril 2007 à 17:45

au lieu des crochets il faut utiliser, ` ` ou, en bash, $( )

Tu as lu les docs. Tu es devenu un informaticien. Que tu le veuilles
ou non. Lire la doc, c'est le Premier et Unique Commandement de
l'informaticien.
-+- TP in: Guide du Linuxien pervers - "L'évangile selon St Thomas"

Re: Recuperation à partir de fichiers
Avatar
Auteur: Sve@r (IP enregistrée)
Date: le 22 avril 2007 à 11:22

_Moa_ a écrit :

j'avais songé tout betement à $var=[grep -i 'MOT' *.ext wc -l]mais apaprement, cela aurait été trop simple, et ça va pas :/


Déjà, il faut bien réaliser que le shell fonctionne toujours à l'identique.
Si auparavant tu remplissais une variable en tapant
var=Hello
(sans mettre de "$" devant ton nom de variable), pourquoi t'en as mis un ici ???

Sinon c'est effectivedment tout simple
var=`grep -i 'MOT' *.ext |wc -l`
en Bourne shell
var=$(grep -i 'MOT' *.ext |wc -l)
en Bourne Again Shell (mais la syntaxe précédente fonctionne aussi en bash)

Cours de shell complet ]http://fr.lang.free.fr/cours/Shell_v2.0.pdf[/url]

PS: L'option "-c" de grep permet de compter le nombre d'occurences donc normallement, il devrait être inutile de rajouter la commande "wc" derrière le grep

L'homme qui murmurait à l'oreille des pingouins
[fr.lang.free.fr]

Re: Recuperation à partir de fichiers
Auteur: Moctar (IP enregistrée)
Date: le 15 septembre 2007 à 04:55

Bon voila j utilise kannel, j arrive a envoyer les sms et de les recevoir. Mais je vois seulement le sms reçus au niveau du smsbox. Mon problem ,c est comment faire pour ke le sms recu soit directement dans un compte utilisateur qui se trouve sur la machine? Merci de votre reponse

Re: Récupération à partir de fichiers
Avatar
Auteur: nicola (IP enregistrée)
Date: le 15 septembre 2007 à 07:43

La première question doit être : Comment ne pas écrire en SMS sur le phorum ?
Je pense que la réponse peut se trouver dans le fichier de configuration, mais peut-être que tu as déjà regardé.

--
On ne prête qu’aux riches, et on a bien raison, parce que les autres remboursent difficilement.
-+- Tristan Bernard (1866-1947) -+-



Nom du forum : (antispam) - (en développement:saisir un texte pour le message, rempli cette zone automatiquement)
Votre nom: 
Votre email: 
Sujet: 

 
Ce forum est boosté par Phorum.