Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

32 réponses
Avatar
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 recup=E9rer le contenu de ces trames, (avec les deux balises
<SyncML> et </SyncML> si possible), mais j'ai un peut de mal =E0 trouver
la commande adapt=E9e.
Pour moi, il faudrai utiliser une expression r=E9guli=E8re 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 =E7a dans une autre commande avec
un pipe et une expression r=E9guli=E8re
Je ne suis pas tr=E8s dou=E9 avec tous =E7a, pourriez vous me donner un ptit
coup de main ?

Merci

Fab

10 réponses

1 2 3 4
Avatar
n
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

Avatar
Luc.Habert.00__arjf
"" :

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.

Avatar
n
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.

Avatar
ALain Montfranc
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
"<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 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)

Avatar
Nicolas George
"" 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 ?
Avatar
n
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
Avatar
Matthieu Moy
"" writes:

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

Avatar
n
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
Avatar
Stephane Chazelas
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


Avatar
Stephane Chazelas
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

1 2 3 4