• # sed, grep, awk

    Posté par . En réponse au message Afficher un champ précis depuis un log. Évalué à 3.

    Effectivement, awk/sed sont les outils qu'on va assez vite dégainer pour traiter des flux de texte. Je suis tombé l'option -o de grep il y a peu de temps. Elle n'est pas portable mais si tu es sous Linux, ça serait dommage de se priver.

    $ echo "blablabla to=<addr1@machin.truc> bliblibli to=<addr2@truc.bidule>" > fichier
    $ grep -o "to=<\([^>]*\)>" fichier
    to=<addr1@machin.truc>
    to=<addr2@truc.bidule>


    Ensuite, yapuka (c) enlever les petits morceaux qui traînent avec l'outil de ton choix. Par exemple en pipant dans un sed du genre
    (...) | sed -e 's/to=<\(.*\)>/1円/'


    En sed pur, on peut aussi faire des trucs, mais c'est un peu moins lisible, et la solution que j'ai ne peut traiter qu'une seul adresse par ligne (ce qui à priori n'est pas trop grave pour ton cas mais bon :)
    sed -ne '/to=</,/>/ s/.*to=<\(.*\)>.*/1円/p' fichier

    pour en savoir plus sur sed:
    http://www.commentcamarche.net/faq/478-sed
    http://www.grymoire.com/Unix/Sed.html