IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Afficher les lignes contenues entre deux chaines (blocs multiples) avec sed, awk ou grep


Sujet :

Shell et commandes POSIX

  1. #1
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut Afficher les lignes contenues entre deux chaines (blocs multiples) avec sed, awk ou grep
    Salut,

    Je cherche à extraire des blocs de lignes se trouvant entre deux occurences.
    J'arrive bien à extraire un bloc, mais un seul.

    Exemple avec monfichier.txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    debut_sect
    texte L1
    texte L2
    texte L3
    texte L4
    fin_sect
     
    donnees inutiles 1
    donnees inutiles 2
     
    debut_sect
    texte L5
    texte L6
    texte L7
    texte L8
    fin_sect
    Le résultat attendu est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    texte L1
    texte L2
    texte L3
    texte L4
    texte L5
    texte L6
    texte L7
    texte L8
    Avec cette commande : sed -e '1,/debut_sect/d' -e '/fin_sect/,$d' monfichier.txt

    Cela m'affiche seulement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    texte L5
    texte L6
    texte L7
    texte L8
    Merci pour votre aide !

  2. #2
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    $ cat plop 
    debut_sect
    texte L1
    texte L2
    texte L3
    texte L4
    fin_sect
     
    donnees inutiles 1
    donnees inutiles 2
     
    debut_sect
    texte L5
    texte L6
    texte L7
    texte L8
    fin_sect
     
    $ sed -n '/debut_sect/,/fin_sect/{//d;p}' plop 
    texte L1
    texte L2
    texte L3
    texte L4
    texte L5
    texte L6
    texte L7
    texte L8
     
    $
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #3
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Quelle puissance

    Merci pour cette contribution qui m'aide grandement.
    Le but de mon script est d'extraire est de mettre en forme le contenu d'un message imf (mail) capturé avec tshark (utilitaire wireshark en ligne de commande).

    A l'heure actuelle, la commande ressemble donc à ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat imf.txt | sed -ne '/Address:/p' -ne '/^ *Subject:/p' -ne '/Line-based text data: text\/plain/,/Boundary: \\r\\n------=_NextPart/{//d;p}' | sed -e 's/\\r\\n//g' -e 's/^[ \t]*//' -ne '$a\\n\n--------------------FIN DU MAIL ------------------\n\n'
    Ce qui m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Address: clement.bonnal@iut-reseaux-telecoms.fr
    Address: destinataire@iut-reseaux-telecoms.fr
    Subject: Re: petit mail
    Ceci est le corps du message
     
    ----- Original Message -----=20
    From: Cl=E9ment BONNAL=20
    To: destinataire=20
    Sent: Thursday, February 02, 2012 3:36 PM
    Subject: Re: petit mail
    Subject: Re: petit mail
     
    Ancien message
     
    Address: clement.bonnal@iut-reseaux-telecoms.fr
    Address: destinataire@iut-reseaux-telecoms.fr
    Subject: Re: mail pour voir si ca marche
     
    ----- Original Message -----=20
    From: Cl=E9ment BONNAL=20
    To: destinataire=20
    Sent: Thursday, February 02, 2012 3:36 PM
    Subject: Re: mail pour voir si ca marche
    Subject: Re: mail pour voir si ca marche
     
    Ceci est un beau mail
     
    ----- Original Message -----=20
    From: Cl=E9ment BONNAL=20
    To: destinataire=20
    Sent: Thursday, February 02, 2012 3:31 PM
    Subject: mail pour voir si ca marche
    Subject: mail pour voir si ca marche
     
    rien
     
     
    --------------------FIN DU MAIL ------------------
    Il me reste deux problèmes à régler :
    - Dans ce résultat il y a deux mails, et j'aurais souhaité mettre la chaine "--------------------FIN DU MAIL ------------------" à la fin de chacun d'eux. Or la tel que je l'ai mis dans ma commande, il ne s'affiche qu'à la fin de la lecture du fichier, il faudrait qu'il s'affiche juste après le filtre de l'expression que tu m'as donné.
    - Si on regarde bien, les messages sont des réponses à d'autres messages. Le corps du message (que j'ai extrait grace à ton aide), contient donc le sujet du message original. Or on voit qu'il apparait 2 fois, en effet j'ai l'impression que mon premier filtre qui me sort le sujet dans la lecture du flux, me le ressort dans le corps du message. Y a t-il possibilité de l'exclure ?
    - Bonus : Existe t-il une commande pour remettre en forme le charset, car la les accents et caractères spéciaux ne sont pas super lisibles !!

    Merci à vous !!!!

  4. #4
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Re-

    - Dans ce résultat il y a deux mails, et j'aurais souhaité mettre la chaine "--------------------FIN DU MAIL ------------------" à la fin de chacun d'eux. Or la tel que je l'ai mis dans ma commande, il ne s'affiche qu'à la fin de la lecture du fichier, il faudrait qu'il s'affiche juste après le filtre de l'expression que tu m'as donné.
    Si en modifiant un peu la syntaxe comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ sed -n '/debut_sect/,/fin_sect/{/debut_sect/b;/fin_sect/{s//FIN/};p}' plop 
    texte L1
    texte L2
    texte L3
    texte L4
    FIN
    texte L5
    texte L6
    texte L7
    texte L8
    FIN
     
    $
    - Si on regarde bien, les messages sont des réponses à d'autres messages. Le corps du message (que j'ai extrait grace à ton aide), contient donc le sujet du message original. Or on voit qu'il apparait 2 fois, en effet j'ai l'impression que mon premier filtre qui me sort le sujet dans la lecture du flux, me le ressort dans le corps du message. Y a t-il possibilité de l'exclure ?
    Avec "sed" non, ou du moins ça serait beaucoup trop complexe à mettre en place


    - Bonus : Existe t-il une commande pour remettre en forme le charset, car la les accents et caractères spéciaux ne sont pas super lisibles !!
    Voir du côté de la commande "iconv" ou "utrac"

    Sinon dans ton code il y a quelques incohérences, du moins concernant tes explications et sans voir le fichier original.

    sed -ne '/Address:/p' -ne '/^ *Subject:/p' peut être regroupé sur une seule commande sed -ne '/Address:\|^ *Subject:/p'.

    /Boundary: \\r\\n------=_NextPart/ si le but est de matcher une ligne contenant "Boundary" suivi d'un retour chariot et d'une fin de ligne puis d'une ligne contenant "------=_NextPart" c'est loupé. sed doit d'abord ajouter (commande N) les lignes dans sa mémoire principale pour voir les éventuels retours chariot et fins de ligne et les traiter.

    Idem pour sed -e 's/\\r\\n//g'. Si tu ne charges pas avant tout le fichier dans la mémoire principale, cette commande n'a aucune incidence sur le fichier.
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #5
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Salut,

    Oui je voulais être concis pour le début afin de partir de choses simples.
    J'ai un petit peu changé ma façon de procéder car l'autre commencait à devenir trop complexe, et comme tu l'as dis, comportait certaines fois des incohérences.

    Quel est le but ?
    Avec tshark (plugin de wireshark), je souhaite extraire d'un paquet IMF (mail) l'expéditeur, le destinataire, le sujet, et le corps du message afin des l'afficher dans la console.

    La commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tshark -i eth0 -R "text && data-text-lines && imf" -T fields -e imf.from -e imf.to -e imf.subject -e text
    me donne comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	=?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	Re: Sujet du mail	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 176898, TSecr 2871147613,SEQ/ACK analysis,C: .,Preamble,First boundary: --------------060005050807010000020003\r\n,On 03/02/2012 15:45, clement wrote:\r\n,> On 03/02/2012 13:28, clement wrote:\r\n,>> On 03/02/2012 12:44, clement wrote:\r\n,>>> On 03/02/2012 12:37, Clément BONNAL wrote:\r\n,>>>>\r\n,>>>>     ----- Original Message -----\r\n,>>>>     *From:* Clément BONNAL\r\n,>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>     *To:* Clément BONNAL\r\n,>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>     *Sent:* Friday, February 03, 2012 10:50 AM\r\n,>>>>     *Subject:* Re: Sujet du mail\r\n,>>>>\r\n,>>>>     Mail 3\r\n,>>>>\r\n,>>>>         ----- Original Message -----\r\n,>>>>         *From:* Clément BONNAL\r\n,>>>>         <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>         *To:* landry bremaud\r\n,>>>>         <mailto:landry.bremaud@iut-reseaux-telecoms.fr>\r\n,>>>>         *Sent:* Thursday, February 02, 2012 3:36 PM\r\n,>>>>         *Subject:* Re: Sujet du mail\r\n,>>>>\r\n,>>>>         Mail 2\r\n,>>>>\r\n,>>>>             ----- Original Message -----\r\n,>>>>             *From:* Clément BONNAL\r\n,>>>>             <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>             *To:* landry bremaud\r\n,>>>>             <mailto:landry.bremaud@iut-reseaux-telecoms.fr>\r\n,>>>>             *Sent:* Thursday, February 02, 2012 3:31 PM\r\n,>>>>             *Subject:* Sujet du mail\r\n,>>>>\r\n,>>>>             Mail 1 \r\n,>>>>\r\n,>>>\r\n,>>\r\n,>\r\n,\r\n,Boundary: \r\n--------------060005050807010000020003\r\n,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r\n,<html>\r\n,  <head>\r\n,    <meta content="text/html; charset=ISO-8859-1"\r\n,      http-equiv="Content-Type">\r\n,  </head>\r\n,  <body bgcolor="#ffffff" text="#000000">\r\n,    On 03/02/2012 15:45, clement wrote:\r\n,    <blockquote cite="mid:4F2BF31E.9020706@iut-reseaux-telecoms.fr"\r\n,      type="cite">\r\n,      <meta content="text/html; charset=ISO-8859-1"\r\n,        http-equiv="Content-Type">\r\n,      On 03/02/2012 13:28, clement wrote:\r\n,      <blockquote cite="mid:4F2BD2F2.4000700@iut-reseaux-telecoms.fr"\r\n,        type="cite">\r\n,        <meta content="text/html; charset=ISO-8859-1"\r\n,          http-equiv="Content-Type">\r\n,        On 03/02/2012 12:44, clement wrote:\r\n,        <blockquote cite="mid:4F2BC8A7.8030103@iut-reseaux-telecoms.fr"\r\n,          type="cite">\r\n,          <meta content="text/html; charset=ISO-8859-1"\r\n,            http-equiv="Content-Type">\r\n,          On 03/02/2012 12:37, Cl&eacute;ment BONNAL wrote:\r\n,          <blockquote\r\n,            cite="mid:86BDD62FBEC546E28765A257C939D3FF@NetbookRT1"\r\n,            type="cite">\r\n,            <meta content="text/html; charset=ISO-8859-1"\r\n,              http-equiv="Content-Type">\r\n,            <meta name="GENERATOR" content="MSHTML 8.00.6001.19170">\r\n,            <style></style>\r\n,            <div>&nbsp;</div>\r\n,            <blockquote style="border-left: 2px solid rgb(0, 0, 0);\r\n,              padding-left: 5px; padding-right: 0px; margin-left: 5px;\r\n,              margin-right: 0px;" dir="ltr">\r\n,              <div style="font: 10pt arial;">----- Original Message\r\n,                ----- </div>\r\n,              <div style="font: 10pt arial; background: none repeat\r\n,                scroll 0% 0% rgb(228, 228, 228);"><b>From:</b> <a\r\n,                  moz-do-not-send="true"\r\n,                  title="clement.bonnal@iut-reseaux-telecoms.fr"\r\n,                  href="mailto:clement.bonnal@iut-reseaux-telecoms.fr">Cl&eacute;ment\r\n,\r\n,\r\n,\r\n,                  BONNAL</a> </div>\r\n,              <div style="font: 10pt arial;"><b>To:</b> <a\r\n,                  moz-do-not-send="true"\r\n,                  title="clement.bonnal@iut-reseaux-telecoms.fr"\r\n,                  href="mailto:clement.bonnal@iut-reseaux-telecoms.fr">Cl&eacute;ment\r\n,\r\n,\r\n,\r\n,                  BONNAL</a> </div>\r\n,              <div style="font: 10pt arial;"><b>Sent:</b> Friday,\r\n,                February 03, 2012 10:50 AM</div>\r\n,              <div style="font: 10pt arial;"><b>Subject:</b> Re: Sujet\r\n,                du mail</div>\r\n,              <div><br>\r\n,              </div>\r\n,              <div>Mail 3 <br>\r\n,              </div>\r\n,              <blockquote style="border-left: 2px solid rgb(0, 0, 0);\r\n,                padding-left: 5px; padding-right: 0px; margin-left: 5px;\r\n,                margin-right: 0px;" dir="ltr">\r\n,                <div style="font: 10pt arial;">----- Original Message\r\n,                  ----- </div>\r\n,                <div style="font: 10pt arial; background: none repeat\r\n,                  scroll 0% 0% rgb(228, 228, 228);"><b>From:</b> <a\r\n,                    moz-do-not-send="true"\r\n,                    title="clement.bonnal@iut-reseaux-telecoms.fr"\r\n,                    href="mailto:clement.bonnal@iut-reseaux-telecoms.fr">Cl&eacute;ment\r\n,\r\n,\r\n,\r\n,                    BONNAL</a> </div>\r\n,                <div style="font: 10pt arial;"><b>To:</b> <a\r\n,                    moz-do-not-send="true"\r\n,                    title="landry.bremaud@iut-reseaux-telecoms.fr"\r\n,                    href="mailto:landry.bremaud@iut-reseaux-telecoms.fr">landry\r\n,\r\n,\r\n,\r\n,                    bremaud</a> </div>\r\n,                <div style="font: 10pt arial;"><b>Sent:</b> Thursday,\r\n,                  February 02, 2012 3:36 PM</div>\r\n,                <div style="font: 10pt arial;"><b>Subject:</b> Re: Sujet\r\n,                  du mail</div>\r\n,                <div><br>\r\n,                </div>\r\n,                <font size="2"><font face="Arial">Mail 2</font></font>\r\n,                <blockquote style="border-left: 2px solid rgb(0, 0, 0);\r\n,                  padding-left: 5px; padding-right: 0px; margin-left:\r\n,                  5px; margin-right: 0px;" dir="ltr">\r\n,                  <div style="font: 10pt arial;">----- Original Message\r\n,                    ----- </div>\r\n,                  <div style="font: 10pt arial; background: none repeat\r\n,                    scroll 0% 0% rgb(228, 228, 228);"><b>From:</b> <a\r\n,                      moz-do-not-send="true"\r\n,                      title="clement.bonnal@iut-reseaux-telecoms.fr"\r\n,                      href="mailto:clement.bonnal@iut-reseaux-telecoms.fr">Cl&eacute;ment\r\n,\r\n,\r\n,\r\n,                      BONNAL</a> </div>\r\n,                  <div style="font: 10pt arial;"><b>To:</b> <a\r\n,                      moz-do-not-send="true"\r\n,                      title="landry.bremaud@iut-reseaux-telecoms.fr"\r\n,                      href="mailto:landry.bremaud@iut-reseaux-telecoms.fr">landry\r\n,\r\n,\r\n,\r\n,                      bremaud</a> </div>\r\n,                  <div style="font: 10pt arial;"><b>Sent:</b> Thursday,\r\n,                    February 02, 2012 3:31 PM</div>\r\n,                  <div style="font: 10pt arial;"><b>Subject:</b> Sujet\r\n,                    du mail</div>\r\n,                  <div><br>\r\n,                  </div>\r\n,                  <font size="2"><font face="Arial">Mail 1</font></font>\r\n,                </blockquote>\r\n,              </blockquote>\r\n,            </blockquote>\r\n,          </blockquote>\r\n,          <br>\r\n,        </blockquote>\r\n,        <br>\r\n,      </blockquote>\r\n,      <br>\r\n,    </blockquote>\r\n,    <br>\r\n,  </body>\r\n,</html>\r\n,Last boundary: \r\n--------------060005050807010000020003--\r\n
    On voit que sur la fin c'est le même message mais codé en HTML (ils ne le sont pas tous). Je souhaite donc supprimer cette partie redondante.
    La commande suivante le fait très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tshark -i eth0 -R "text && data-text-lines && imf" -T fields -e imf.from -e imf.to -e imf.subject -e text | sed -e 's/<html>.*<\/html>//g'
    et donne ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	=?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	Re: Sujet du mail	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 256057, TSecr 2871939211,SEQ/ACK analysis,C: .,Preamble,First boundary: --------------010801040601080202040408\r\n,On 03/02/2012 18:48, Cl�ment BONNAL wrote:\r\n,> On 03/02/2012 15:45, clement wrote:\r\n,>> On 03/02/2012 13:28, clement wrote:\r\n,>>> On 03/02/2012 12:44, clement wrote:\r\n,>>>> On 03/02/2012 12:37, Cl�ment BONNAL wrote:\r\n,>>>>>\r\n,>>>>>     ----- Original Message -----\r\n,>>>>>     *From:* Cl�ment BONNAL\r\n,>>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>>     *To:* Cl�ment BONNAL\r\n,>>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>>     *Sent:* Friday, February 03, 2012 10:50 AM\r\n,>>>>>     *Subject:* Re: Sujet du mail\r\n,>>>>>\r\n,>>>>>     Mail 3\r\n,>>>>>\r\n,>>>>>         ----- Original Message -----\r\n,>>>>>         *From:* Cl�ment BONNAL\r\n,>>>>>         <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>>         *To:* landry bremaud\r\n,>>>>>         <mailto:landry.bremaud@iut-reseaux-telecoms.fr>\r\n,>>>>>         *Sent:* Thursday, February 02, 2012 3:36 PM\r\n,>>>>>         *Subject:* Re: Sujet du mail\r\n,>>>>>\r\n,>>>>>         Mail 2\r\n,>>>>>\r\n,>>>>>             ----- Original Message -----\r\n,>>>>>             *From:* Cl�ment BONNAL\r\n,>>>>>             <mailto:clement.bonnal@iut-reseaux-telecoms.fr>\r\n,>>>>>             *To:* landry bremaud\r\n,>>>>>             <mailto:landry.bremaud@iut-reseaux-telecoms.fr>\r\n,>>>>>             *Sent:* Thursday, February 02, 2012 3:31 PM\r\n,>>>>>             *Subject:* Sujet du mail\r\n,>>>>>\r\n,>>>>>             Mail 1 \r\n,>>>>>\r\n,>>>>\r\n,>>>\r\n,>>\r\n,>\r\n,\r\n,Boundary: \r\n--------------010801040601080202040408\r\n,<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">\r\n,\r\n,Last boundary: \r\n--------------010801040601080202040408--\r\n
    Ensuite, vu que les \r\n font partie du message je rétabli les lignes et la tabulations. Je transforme la commande en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tshark -i eth0 -R "text && data-text-lines && imf" -T fields -e imf.from -e imf.to -e imf.subject -e text | sed -e 's/<html>.*<\/html>//g' -e 's/\\r\\n,/\n/g' -e 's/\t/\n/g'
    ce qui me donne (et c'est beaucoup mieux) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    Re: Sujet du mail
    No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 315671, TSecr 2872535367,SEQ/ACK analysis,C: .,Preamble,First boundary: --------------080708060503020001060508
    On 03/02/2012 18:48, Cl�ment BONNAL wrote:
    > On 03/02/2012 15:45, clement wrote:
    >> On 03/02/2012 13:28, clement wrote:
    >>> On 03/02/2012 12:44, clement wrote:
    >>>> On 03/02/2012 12:37, Cl�ment BONNAL wrote:
    >>>>>
    >>>>>     ----- Original Message -----
    >>>>>     *From:* Cl�ment BONNAL
    >>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>>     *To:* Cl�ment BONNAL
    >>>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>>     *Sent:* Friday, February 03, 2012 10:50 AM
    >>>>>     *Subject:* Re: Sujet du mail
    >>>>>
    >>>>>     Mail 3
    >>>>>
    >>>>>         ----- Original Message -----
    >>>>>         *From:* Cl�ment BONNAL
    >>>>>         <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>>         *To:* landry bremaud
    >>>>>         <mailto:landry.bremaud@iut-reseaux-telecoms.fr>
    >>>>>         *Sent:* Thursday, February 02, 2012 3:36 PM
    >>>>>         *Subject:* Re: Sujet du mail
    >>>>>
    >>>>>         Mail 2
    >>>>>
    >>>>>             ----- Original Message -----
    >>>>>             *From:* Cl�ment BONNAL
    >>>>>             <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>>             *To:* landry bremaud
    >>>>>             <mailto:landry.bremaud@iut-reseaux-telecoms.fr>
    >>>>>             *Sent:* Thursday, February 02, 2012 3:31 PM
    >>>>>             *Subject:* Sujet du mail
    >>>>>
    >>>>>             Mail 1 
    >>>>>
    >>>>
    >>>
    >>
    >
     
    Boundary: \r\n--------------080708060503020001060508
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
     
    Last boundary: \r\n--------------080708060503020001060508--\r\n
    Et on y est presque !!!!!!
    Il me reste quelques lignes parasites qui ont toujours la même chaine de départ.
    Il me faudrait donc supprimer les lignes suivantes (trouvables car elles commencent toujours par la même séquence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 315671, TSecr 2872535367,SEQ/ACK analysis,C: .,Preamble,First boundary: --------------080708060503020001060508
    Boundary: \r\n--------------080708060503020001060508
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    Last boundary: \r\n--------------080708060503020001060508--\r\n
    Je pense qu'un dernier coup de sed ferait l'affaire ! (Enfin!!!)
    Et merci de m'avoir lu

  6. #6
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Si je rajoute un pipe à ma commande précédente avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    | sed -e '/^No-Operation (NOP)/d' -e '/^Boundary/d' -e '/^<!DOCTYPE HTML/d' -e '/^Last boundary/d'
    Cela fonctionne. En effet, je suis obligé de refaire un pipe car si je les inclus dans la commande précédente, cela ne fonctionne pas car le message n'est pas encore mis en forme sur plusieurs lignes (et donc considéré comme une seule ligne)

    Le problème avec ca, c'est que vu que je lis des paquets arrivant sur mon interface grace à tshark, et bien j'ai un retard de plusieurs messages à chaque fois (je suis obligé d'envoyer 3 mails avant de pouvoir lire le 1er correctement déchiffré sur ma console...)

    Déjà rien qu'avec le pipe précédent, je devais envoyer un deuxième mail avant de voir apparaitre le 1er...

    Une dernière petite aide serait la bienvenue
    Merci!

  7. #7
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    $ cat script.sed 
    s/\tNo-Op.*\\n,On/\nOn/
    s/Boundary.*//
    s/<html>.*<\/html>//g
    s/\\r\\n,/\n/g
    s/\t/\n/g
     
    $ sed -f script.sed plop 
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    Re: Sujet du mail
    On 03/02/2012 15:45, clement wrote:
    > On 03/02/2012 13:28, clement wrote:
    >> On 03/02/2012 12:44, clement wrote:
    >>> On 03/02/2012 12:37, Clément BONNAL wrote:
    >>>>
    >>>>     ----- Original Message -----
    >>>>     *From:* Clément BONNAL
    >>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>     *To:* Clément BONNAL
    >>>>     <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>     *Sent:* Friday, February 03, 2012 10:50 AM
    >>>>     *Subject:* Re: Sujet du mail
    >>>>
    >>>>     Mail 3
    >>>>
    >>>>         ----- Original Message -----
    >>>>         *From:* Clément BONNAL
    >>>>         <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>         *To:* landry bremaud
    >>>>         <mailto:landry.bremaud@iut-reseaux-telecoms.fr>
    >>>>         *Sent:* Thursday, February 02, 2012 3:36 PM
    >>>>         *Subject:* Re: Sujet du mail
    >>>>
    >>>>         Mail 2
    >>>>
    >>>>             ----- Original Message -----
    >>>>             *From:* Clément BONNAL
    >>>>             <mailto:clement.bonnal@iut-reseaux-telecoms.fr>
    >>>>             *To:* landry bremaud
    >>>>             <mailto:landry.bremaud@iut-reseaux-telecoms.fr>
    >>>>             *Sent:* Thursday, February 02, 2012 3:31 PM
    >>>>             *Subject:* Sujet du mail
    >>>>
    >>>>             Mail 1 
    >>>>
    >>>
    >>
    >
     
     
    $
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  8. #8
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Merci beaucoup zipe31,

    Ca marche très bien pour le mail en question !
    Par contre pour un mail simple qui ne contient pas de html, tel que celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	=?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>	Re: Sujet du mail	No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 453687, TSecr 2938897604,SEQ/ACK analysis,C: .,Premiere ligne d'un mail sans html\r\n,Deuxieme ligne du mail\r\n
    Et bien j'ai une ligne parasite qui reste. Le résultat après sed donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    Re: Sujet du mail
    No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 462274, TSecr 2938983479,SEQ/ACK analysis,C: .,Premiere ligne d'un mail sans html
    Deuxieme ligne du mail\r\n
    On remarque donc cette ligne "déchet" (avec la 1ere ligne du corps du message dans celle-ci) devrait pourtant partir grâce à ton filtre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    No-Operation (NOP),No-Operation (NOP),Timestamps: TSval 462274, TSecr 2938983479,SEQ/ACK analysis,C: .,Premiere ligne d'un mail sans html
    Peut-être la fin de l'argument qui est en cause et que j'avoue ne pas trop comprendre : s/\tNo-Op.*\\n,On/\nOn/

    Encore une fois merci à toi, ton aide m'est précieuse!

  9. #9
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Je pense que le plus simple est de rester sur ton idée dans ton message #6 en rajoutant un "pipe" pour éliminer les lignes superflues
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  10. #10
    Expert éminent

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Points : 6 276
    Points
    6 276
    Par défaut
    Quoi que...

    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    s/\tNo-Op.*\\n,On/\nOn/
    s/\tNo-Op.*: \.,/\n/
    s/Boundary.*//
    s/<html>.*<\/html>//g
    s/\\r\\n,/\n/g
    s/\t/\n/g
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  11. #11
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Effectivement, vu que mon problème de temps réel est réglé je peux utiliser les pipes.

    Merci énormément pour ton aide, tu m'as bien aidé à avancer dans mon projet !

  12. #12
    Membre régulier Avatar de theclem35
    Homme Profil pro
    Technicien Réseaux & Télécommunications
    Inscrit en
    Décembre 2007
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien Réseaux & Télécommunications
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 148
    Points : 86
    Points
    86
    Par défaut
    Pour ta dernière commande ca marche plutot pas mal.

    Je n'ai aucune erreur dans les mails HTML.

    Par contre à l'envoi d'un mail texte j'ai ce résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    Re: Sujet du mail
    mail sans html\r\n
    Et à sa réception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    =?ISO-8859-1?Q?Cl=E9ment_BONNAL?= <clement.bonnal@free.fr>
    Re: Sujet du mail
    SEQ/ACK analysis,mail sans html
     
    .\r\n
    Un SEQ/ACK analysis qui vient se rajouter ....

    Pour les pipes finalement même si c'est en temps réel, le deuxième pipe fait tout foirer je n'ai même plus de filtrage html !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Gestion de fichiers] Lister les lignes identiques entre deux fichiers
    Par |Psk| dans le forum Utilitaires et Sécurités
    Réponses: 0
    Dernier message: 11/02/2015, 09h09
  2. Trouver les differences entre deux chaines
    Par xxxavvv dans le forum Langage
    Réponses: 4
    Dernier message: 28/05/2010, 23h42
  3. [RegEx] Récupérer ce qu'il y a entre deux chaines (toute les occurences)
    Par greg1107 dans le forum Langage
    Réponses: 3
    Dernier message: 23/01/2008, 14h48
  4. Détecter les lignes identiques entre deux matrices
    Par totovich dans le forum MATLAB
    Réponses: 5
    Dernier message: 17/04/2007, 09h42
  5. afficher les dates comprisent entre deux dates
    Par hugobob dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/10/2006, 11h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo