expression régulière selection d'un bout de trame

Le
n
bonjour,
j'ai fait une cature de trames qui contient notament des trames
<SyncML>*</SyncML>
avec l'* qui est tout le contenu de la trame.

Je voudrais recuprer le contenu de ces trames, (avec les deux balises
<SyncML> et </SyncML> si possible), mais j'ai un peut de mal trouver
la commande adapte.
Pour moi, il faudrai utiliser une expression rgulire du type
"<SyncML>(.*)</SyncML>" mais je ne vois pas trop avec quelle
commande,

j'obtiens toutes les trames en faisant un
cat maCapture
et je pense qu'on pourrais mettre tous a dans une autre commande avec
un pipe et une expression rgulire
Je ne suis pas trs dou avec tous a, pourriez vous me donner un ptit
coup de main ?

Merci

Fab
Vos réponses Page 2 / 4
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
n
Le #732492
Maintenant, je pense qu'apprendre le xslt serait un meilleur usage de ton
temps.


ok, je vais essayer de regarder ça
par contre, je ne sais pas si j'ai vraiment bien expliqué, en fait le
fichier maCapture n'est pas que en xml, c'est en fait une capture
réalisée avec wireshark (ou tcpdump) et qui contient plein d'échanges
entre deux machines dont quelques trames d'xml (qui commencent à
chaque fois par <SyncML>).

voila

Fab

Luc.Habert.00__arjf
Le #732491
"" :

par contre, je ne sais pas si j'ai vraiment bien expliqué, en fait le
fichier maCapture n'est pas que en xml, c'est en fait une capture
réalisée avec wireshark (ou tcpdump) et qui contient plein d'échanges
entre deux machines dont quelques trames d'xml (qui commencent à
chaque fois par <SyncML>).


Il faudrait voir si ce qui est en dehors des SyncML peut passer pour du
texte dans un document xml ou pas. Si non, tu ne peux pas t'en sortir avec
xslt, et il va te falloir bourriner du perl.

n
Le #732490
Il faudrait voir si ce qui est en dehors des SyncML peut passer pour du
texte dans un document xml ou pas.


non, ça ne passe pas

Si non, tu ne peux pas t'en sortir avec
xslt, et il va te falloir bourriner du perl.


"bourriner" ! ouhaa, j'ai eu 3 heures de cours sur le perl et j'ai
jamais pratiqué, alors "bricoler" c'est dans la limite du faisable,
mais "bourriner" c'est pas pour moi.

ALain Montfranc
Le #732489
a écrit
bonjour,
j'ai fait une cature de trames qui contient notament des trames
<SyncML>*</SyncML>
avec l'* qui est tout le contenu de la trame.

Je voudrais recupérer le contenu de ces trames, (avec les deux balises
<SyncML> et </SyncML> si possible), mais j'ai un peut de mal à trouver
la commande adaptée.
Pour moi, il faudrai utiliser une expression régulière du type
" commande,...

j'obtiens toutes les trames en faisant un
cat maCapture
et je pense qu'on pourrais mettre tous ça dans une autre commande avec
un pipe et une expression régulière
Je ne suis pas très doué avec tous ça, pourriez vous me donner un ptit
coup de main ?

Merci

Fab


Une solution moyennement simple bien qu'un peu crade :

Identifier, directement ou par recodage, 3 caractères affichables ne
pouvant pas faire partie du fichier (par "par recodage" j'entends en
effectuant un transcodage visant à le remplacer par une séquence, comme
on le fait en HTML : &lt; remplace < pour permettre d'utiliser le < en
marqueur)

Remplacer <SyncML> Par le premier caractère (mettons par exemple D)
Replacer </SyncML> par le deuxième (mettons F)
Remplacer le retour chariot par le troisième (mettons L)

Ceci se fait simplement à coup de sed

Faire ensuite un sed 's/F[^D]*D//' pour virer le contenu hors trame =>
tu obtiens le contenu des trames

Re-remplacer L par un retour chariot

Eventuellement effectuer le transcodage inverse de celui fait en
préliminaire

C'est crade mais ca marche sur tout *nix de base (meme sans Perl & co)

Nicolas George
Le #732488
"" wrote in message
<snip>

Est-ce que tu pourrais répondre au bon message, plutôt que répondre à chaque
fois au message original du thread ?
n
Le #732202
pas de pb, mais j'utilise google, et une fois, sur fr.comp.os.unix on
m'a dit qu'il fallait mieux que je fasse comme ça...
Mais pour moi, c'est plus simple de faire répondre directement sur le
message concerné.
c'est ce que je vais faire maintenant.

désolé

Fab
Matthieu Moy
Le #732201
""
pas de pb, mais j'utilise google, et une fois, sur fr.comp.os.unix on
m'a dit qu'il fallait mieux que je fasse comme ça...
Mais pour moi, c'est plus simple de faire répondre directement sur le
message concerné.
c'est ce que je vais faire maintenant.


En fait, tu casses le fil du thread pour les gens qui ont un
newsreader qui les gère correctement (à peu près tous, en fa it).

Même dans google groups, ça ressemble à ça :

http://groups.google.com/group/fr.comp.os.unix/browse_frm/thread/3dea7a09c7 73c9ef/e6e69b84efca1d0a

alors que ça devrait faire un bel arbre.

En particulier, quand je ne comprends pas bien un message dans son
contexte, j'ai un raccourcis clavier pour remonter au message auquel
tu réponds, et là, ça marche pas du tout.

--
Matthieu

n
Le #732199
ne t'en fait pas, j'ai bien compris le pb et je suis entièrement
d'accord avec toi, c'est juste que je n'utile pas beaucoup les news
group et qu'un jour on m'a demandé de faire ça.

Fab
Stephane Chazelas
Le #732197
2007-04-16, 06:21(-07), :
Maintenant, je pense qu'apprendre le xslt serait un meilleur usage de ton
temps.


ok, je vais essayer de regarder ça
par contre, je ne sais pas si j'ai vraiment bien expliqué, en fait le
fichier maCapture n'est pas que en xml, c'est en fait une capture
réalisée avec wireshark (ou tcpdump) et qui contient plein d'échanges
entre deux machines dont quelques trames d'xml (qui commencent à
chaque fois par <SyncML>).
[...]


Et c'est quoi le probleme avec la commande perl que j'ai donnée?
(dans la mesure ou il n'y a pas d'imbrication de <SyncML> ou de
<SyncML> pouvant etre present dans du CDATA?).

--
Stéphane


Stephane Chazelas
Le #732195
2007-04-16, 15:39(+02), ALain Montfranc:
[...]
Faire ensuite un sed 's/F[^D]*D//' pour virer le contenu hors trame =>
tu obtiens le contenu des trames
[...]


Dans l'esprit, c'est valide. A ceci pres que sed travaille sur
du texte et qu'en enlevant les sauts de lignes (pas retour
charriot!), tu prends le risque de convertir les donnees en
quelque chose qui n'est plus du texte (par exemple si tu te
retrouve avec des lignes de plus de LINE_MAX). (et probablement,
XML n'est pas forcement du texte, de base).

--
Stéphane

Publicité
Poster une réponse
Anonyme