Léa-Linux & amis :   LinuxFR   GCU-Squad   GNU
Extraction dans une chaine
Envoyé par: bobinoo

Salut à tous,

Est-ce que quelqu'un connait l'expression régulière le contenu d'une fonction (entre accolades) d'un fichier.

Exemple :

J'ai un fichier avec

notification_email{
tagada@tagada.com
tsointsoin@tsointsoin.com
blabli@blabla.com
mopmop@mop.com
}

et je voudrais récupérer toutes les adresse emails contenues entre mes accolades.

Z'avez une idée ?

Merki.

Poste le Friday 6 August 2004 16:54:24
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: Sve@r

A la condition expresse que tu aies bien un seul email par ligne, tu peux essayer ceci:
#!/bin/sh

cat fichier |while read ligne
do
test -n "$trouve" -a "$ligne" = "notification_email {" && trouve="true"

test -n "$trouve" && continue

test "$ligne" = "}" && break

echo "email=$ligne"
done

Le premier test sert à chercher la chaine "notification_email" si elle n'a pas encore été trouvée
Le second test sert à passer à la ligne suivante tant que la chaine cherchée n'a pas été trouvée
Le troisième test sert à quitter la recherche si on est entré dans la zone "notification" et qu'on trouve l'accolade fermante

Résultat: Si tu arrives au "echo", c'est que tu es dans la zone "notification" mais que tu n'en es pas encore sorti !!!

Ce n'est pas programmé dans les règles de la programmation structurée, mais je trouve ce programme plus élégant ainsi

Poste le Friday 6 August 2004 17:11:50
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: bobinoo

J'aurais bien un email par ligne.
Je voudrais pas passer pour un boulet mais dans mon script je met quoi ?

Et si je fais un tableau comprenant chaque ligne de mon fichier, je ne peux pas retourner simplement les valeurs entre notification_email { et l'autre } ?

Poste le Friday 6 August 2004 17:26:36
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: LF

Si tes adresses n'apparaissent que dans ta fonction, y'a plus simple.

grep @ monfichier.sh

winking smiley

Poste le Friday 6 August 2004 17:43:34
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: Sve@r

Argh j'ai honte
1) c'est pas "test -n" qu'il faut écrire mais "test -z"
En effet, il faut tester que "$trouve" est vide pour que ça fonctionne

2) Je suis mortifié de n'avoir pas trouvé la solution de "LF" ! Bon, pour ma décharge, mon script fonctionne même s'il y a des adresses email en dehors de la zone de notification alors que le grep de "LF" renvoie tous les emails, même ceux qu'il ne faut pas.

Pour Bobino (non, tu n'es pas un boulet), tu écris dans ton script tout ce que j'ai écrit, à savoir:
#!/bin/sh
cat nom_du_fichier |while read ligne
do
test -z "$trouve" -a "$ligne" = "notification_email {" && trouve="true"

test -z "$trouve" && continue

test "$ligne" = "}" && break

echo "email=$ligne"
done

Et c'est tout; ou bien alors tu écris juste le script de LF bien plus rapide, à savoir
#!/bin/sh
grep @ nom_du_fichier

Rien de plus

Poste le Friday 6 August 2004 18:44:16
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: Bobinoo

OK great ben je testerai ça lundi et je te dirais si ça fonctionne mais ça a pas l'air mal.

Merci bien.

Poste le Saturday 7 August 2004 09:56:39
Répondre     Citer    
Re: Extraction dans une chaine
Envoyé par: bobinoo

Ben finalement j'ai réfléchit un peu tout le week end et j'ai fait autrement :

open(KPLA,$fichier);
while (<KPLA>) {
if(index($_,"}") >= 0 && $entree eq 1)
{
$entree = 0;
}
if($entree eq 1)
{
$_ =~ s/^\s+//;
$_ =~ s/\s+$//;
$notification_email .= ",".$_;
}
if(index($_,"notification_email {") >= 0)
{
print $_
$entree = 1;
}

}
close(KPLA);


Voila !
Merci pour vos conseils...

Poste le Monday 9 August 2004 11:29:40
Répondre     Citer    
sqlplus et unix
Envoyé par: daous

bonjour,
voilà j'ai un pb un BIG pb, j'ai mis un ordre sql dans un shell cette requete me donne les enregistrements d'une table mais le pb c'est que le resultat de la requete que je mets dans un fichier.txt comprend aussi les informations sur la connexion c'est à dire lorsque sqlplus se connecte à la bd oracle et lorsqu'elle se deconnecte le nom de la bd l'utilisateur de la bd etc ... hors moi ce qui m'interese cest juste les enregistrements alors how i do pour ne récupèrer que les enregistrements, ensuite how dois je faire pour lire ces enregistrements ligne par ligne.

AU SECOURS J'AI VRAIMENT BESOIN D'AIDE HELP ME.

Poste le Tuesday 10 August 2004 11:53:38
Répondre     Citer    
Re: sqlplus et unix
Envoyé par: francoisp

la methode c'est de lancer sqlplus options fichier.sql

et c'est le fichier SQL qui par SPOOL toto.txt
doit emettre le resultat.


l'autre methode c'est de traiter le resultat dans le shell apres l'execution d'sqlplus.

Poste le Tuesday 10 August 2004 12:46:20
Répondre     Citer    
Re: sqlplus et unix
Envoyé par: francoisp

par exemple

SET TERMOUT OFF
SET ECHO OFF
SET PAUSE OFF
SET VERIFY OFF
SET FEEDBACK OFF

SPOOL $LIS/ano.txt

DROP TABLE ano;
CREATE TABLE ano ( lib_err VARCHAR2(200));

.............

donera
>cat $LIS/ano.txt
LIB_ERR
--------------------------------------------------------------------------------
CREATION MOUVEMENT STOCK (COUT) LE 28/07/2004 00:04:31
Nbre d exped lues : 100
Nbre d exped traitees : 99
Nbre de mvts crees (cout de transport): 51
Nbre d exped non traitees (ano de traitement): 1
FIN DU TRAITEMENT CREATION MVT STOCK (COUT) LE 28/07/2004 00:05:08

Poste le Tuesday 10 August 2004 12:55:57
Répondre     Citer    
Re: sqlplus et unix
Envoyé par: daous

par exemple

SET TERMOUT OFF
SET ECHO OFF
SET PAUSE OFF
SET VERIFY OFF
SET FEEDBACK OFF

SPOOL $LIS/ano.txt

DROP TABLE ano;
CREATE TABLE ano ( lib_err VARCHAR2(200));

.............

donera
>cat $LIS/ano.txt
LIB_ERR
Merci tu es bien gentil mais tu sais si tu m'explique pas je ne saurais pas ce que c'est, donne moi la syntaxe pour lancer le sqlplus depuis le shell que dois écrire help me

Poste le Tuesday 10 August 2004 13:14:39
Répondre     Citer    
Re: sqlplus et unix
Envoyé par: francoisp

sqlplus user/password @stkcpt.sql

et dans le fichier SQL

SPOOL fichier.log


tout ça est dans les doc SQLplus...

Poste le Tuesday 10 August 2004 14:40:04
Répondre     Citer    
Re: sqlplus et unix
Envoyé par: daous

stp je débute dans ce domaine ou puis trouvé cette doc sur sqlplus merci énormement donne moi des tuyaux

Poste le Tuesday 10 August 2004 15:16:04
Répondre     Citer    

Veuillez vous authentifier auparavant pour commenter.

 

Ce forum !
Extraction dans une chaine
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.

Sauf mention contraire, les documentations publiées sont sous licence Creative-Commons