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 ?
Et c'est quoi le probleme avec la commande perl que j'ai donnée?
aucun, elle fonctionne très bien, c'est juste que je ne l'avais pas encore testé puis que je cherchait à faire une commande que je comprenait, mais du coup, j'ai compris la tienne ;) merci, en fait, c'est exactement le genre de commande simple que je cherchait !
Fab
Et c'est quoi le probleme avec la commande perl que j'ai donnée?
aucun, elle fonctionne très bien, c'est juste que je ne l'avais pas
encore testé puis que je cherchait à faire une commande que je
comprenait, mais du coup, j'ai compris la tienne ;)
merci, en fait, c'est exactement le genre de commande simple que je
cherchait !
Et c'est quoi le probleme avec la commande perl que j'ai donnée?
aucun, elle fonctionne très bien, c'est juste que je ne l'avais pas encore testé puis que je cherchait à faire une commande que je comprenait, mais du coup, j'ai compris la tienne ;) merci, en fait, c'est exactement le genre de commande simple que je cherchait !
Fab
ALain Montfranc
Stephane Chazelas a écrit
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!),
Exact, on peut ruser en ajoutant dessauts de ligne avant les <SynxML> et apres les </SyncML> pour limiter la taille des lignes
Remarque...
Finalement on peut faire plus simple : on translate les sautfs de ligne par un caractère bouchon on rajoute un saut de ligne avant les <Syn et apres les </sync on grepe les lignes contenant <Sync en debut de ligne on reinjecte les retours chariot
Stephane Chazelas a écrit
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!),
Exact, on peut ruser en ajoutant dessauts de ligne avant les <SynxML>
et apres les </SyncML> pour limiter la taille des lignes
Remarque...
Finalement on peut faire plus simple :
on translate les sautfs de ligne par un caractère bouchon
on rajoute un saut de ligne avant les <Syn et apres les </sync
on grepe les lignes contenant <Sync en debut de ligne
on reinjecte les retours chariot
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!),
Exact, on peut ruser en ajoutant dessauts de ligne avant les <SynxML> et apres les </SyncML> pour limiter la taille des lignes
Remarque...
Finalement on peut faire plus simple : on translate les sautfs de ligne par un caractère bouchon on rajoute un saut de ligne avant les <Syn et apres les </sync on grepe les lignes contenant <Sync en debut de ligne on reinjecte les retours chariot
Stephane Chazelas
2007-04-16, 16:45(+02), ALain Montfranc: [...]
Finalement on peut faire plus simple : on translate les sautfs de ligne par un caractère bouchon
A partir de la, on n'as plus du texte.
Et il nous faut donc un outil non-text (i.e. ni sed, ni grep) pour faire:
on rajoute un saut de ligne avant les <Syn et apres les </sync on grepe les lignes contenant <Sync en debut de ligne on reinjecte les retours chariot
En gros, il faudra utiliser perl ou des versions GNU des text-utilities qui supportent du non-text.
-- Stéphane
2007-04-16, 16:45(+02), ALain Montfranc:
[...]
Finalement on peut faire plus simple :
on translate les sautfs de ligne par un caractère bouchon
A partir de la, on n'as plus du texte.
Et il nous faut donc un outil non-text (i.e. ni sed, ni grep)
pour faire:
on rajoute un saut de ligne avant les <Syn et apres les </sync
on grepe les lignes contenant <Sync en debut de ligne
on reinjecte les retours chariot
En gros, il faudra utiliser perl ou des versions GNU des
text-utilities qui supportent du non-text.
Dans cette définition, on voit bien qu'une ligne doit contenir des caractères, mais la longueur est définie en nombre d'octets. D'où la quasi impossibilité de la définir en une seule regexp.
En fait, c'est plutot:
([^ n]{0,LINE_MAX-1}n)*
(note que ce sont des characters, pas des bytes, encore moins
des octets...)
Je vois bien la différence entre les octets (bytes) et les caractères
(characters), mais pas entre les bytes et les octets.
Dans cette définition, on voit bien qu'une ligne doit contenir des
caractères, mais la longueur est définie en nombre d'octets. D'où la
quasi impossibilité de la définir en une seule regexp.
Dans cette définition, on voit bien qu'une ligne doit contenir des caractères, mais la longueur est définie en nombre d'octets. D'où la quasi impossibilité de la définir en une seule regexp.
Stephane Chazelas
2007-04-16, 18:36(+02), Olivier Miakinen:
En fait, c'est plutot:
([^ n]{0,LINE_MAX-1}n)*
(note que ce sont des characters, pas des bytes, encore moins des octets...)
Je vois bien la différence entre les octets (bytes) et les caractères (characters), mais pas entre les bytes et les octets.
Depend des terminologies. Quand on fait du C par exemple, octet et byte sont differents. Le byte est le plus petit element adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_84
donc mon commentaire n'etait pas vraiment pertinent.
Dans cette définition, on voit bien qu'une ligne doit contenir des caractères, mais la longueur est définie en nombre d'octets. D'où la quasi impossibilité de la définir en une seule regexp.
Indeed, well spotted, my bad again.
-- Stéphane
2007-04-16, 18:36(+02), Olivier Miakinen:
En fait, c'est plutot:
([^ n]{0,LINE_MAX-1}n)*
(note que ce sont des characters, pas des bytes, encore moins
des octets...)
Je vois bien la différence entre les octets (bytes) et les caractères
(characters), mais pas entre les bytes et les octets.
Depend des terminologies. Quand on fait du C par exemple, octet
et byte sont differents. Le byte est le plus petit element
adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet:
http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_84
donc mon commentaire n'etait pas vraiment pertinent.
Dans cette définition, on voit bien qu'une ligne doit contenir des
caractères, mais la longueur est définie en nombre d'octets. D'où la
quasi impossibilité de la définir en une seule regexp.
(note que ce sont des characters, pas des bytes, encore moins des octets...)
Je vois bien la différence entre les octets (bytes) et les caractères (characters), mais pas entre les bytes et les octets.
Depend des terminologies. Quand on fait du C par exemple, octet et byte sont differents. Le byte est le plus petit element adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#tag_03_84
donc mon commentaire n'etait pas vraiment pertinent.
Dans cette définition, on voit bien qu'une ligne doit contenir des caractères, mais la longueur est définie en nombre d'octets. D'où la quasi impossibilité de la définir en une seule regexp.
Indeed, well spotted, my bad again.
-- Stéphane
Matthieu Moy
Stephane Chazelas writes:
Depend des terminologies. Quand on fait du C par exemple, octet et byte sont differents. Le byte est le plus petit element adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#ta g_03_84
donc mon commentaire n'etait pas vraiment pertinent.
Depend des terminologies. Quand on fait du C par exemple, octet
et byte sont differents. Le byte est le plus petit element
adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet:
http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#ta g_03_84
donc mon commentaire n'etait pas vraiment pertinent.
Depend des terminologies. Quand on fait du C par exemple, octet et byte sont differents. Le byte est le plus petit element adressable, souvent un octet. Et un octet est un mot de 8 bits.
Par contre, pour POSIX/Unix, apparemment byte == octet: http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap03.html#ta g_03_84
donc mon commentaire n'etait pas vraiment pertinent.