Modifier un fichier texte commande unix

Résolu
Bonjour tout le monde,
J'aurai besoin d'un petit coup de main pour modifier un fichier texte.

au départ j'ai un fichier qui contient des enregistrements comme celui ci:

"10/02/2007 20:34:09","adresse@domaine.fr","Erreur de connexion au serveur de messagerie"

et je voudrai récupérer juste :
"adresse@domaine.fr"

je sais que c'est possible avec un filtre, mais impossible de me souvenir lequel.

Merci à tous !
Configuration: Windows XP
Firefox 2.0.0.1

11 réponses

  1. Modérateur
    Re,

    ou grep à la place de cut, perl, sed, awk
    lami20j@debian:~$ cat alain | grep -oE '\w+\@\w+\.fr'
    adresse@domaine.fr
    adresse1@domaine.fr
    adresse2@domaine.fr
    Na!:-))

    5
    1. Modérateur
      D'abord on dit : Nananère !

      Puis t'as oublié l'exemple avec grep qui inclut les guillemets ;-DD

      Au passage, j'avais oublié l'expression qui exclut les guillemets avec "awk" :
      awk -F\" '{ print $4 }'
      ;-))
      0
    2. Modérateur
      @jipicyD'abord on dit : Nananère ! Ok j'ai noté :-)
      Toutefois Na!

      Pour le cas avec les guillemets
      lami20j@debian:~$ cat alain | grep -oE '"\w+\@.*\.fr"'
      "adresse@domaine.fr"
      "adresse1@domaine.fr"
      "adresse2@domaine.fr"
      
      Bonne journée JP :-)
      0
  2. Bonjour,

    essaie ceci :

    cut -d "," -f2 fichier

    2
    1. Modérateur
      Salut,

      si tu veux sans les guillemets
      lami20j@debian:~$ cat alain
      "10/02/2007 20:34:09","adresse@domaine.fr","Erreur de connexion au serveur de messagerie"
      "10/02/2007 20:34:09","adresse1@domaine.fr","Erreur de connexion au serveur de messagerie"
      "10/02/2007 20:34:09","adresse2@domaine.fr","Erreur de connexion au serveur de messagerie"
      lami20j@debian:~$ cat alain | cut -d"," -f2
      "adresse@domaine.fr"
      "adresse1@domaine.fr"
      "adresse2@domaine.fr"
      lami20j@debian:~$ cat alain | perl -ne 'print ((split /[,"]/)[4],"\n")'
      adresse@domaine.fr
      adresse1@domaine.fr
      adresse2@domaine.fr
      2
      1. Modérateur
        Salut,

        Tu peux aussi utiliser "awk" à la place de "cut" :
        awk -F, '{ print $2 }' fichier
        et "sed" à la place de "perl" :
        sed 's/.*,\"\(.*\)\",.*/\1/' fichier
        ;-))
        2
        1. Bonsoir,

          Est-il possible, plutôt que d'afficher seulement l'adresse dans la console, de la copier dans un fichier texte déjà existant, à la suite d'une liste d'adresse (une adresse par ligne).

          Merci à tous.
          2
          1. Modérateur
            Et aussi sans guillements avec cut
            lami20j@debian:~$ cat alain | cut -d'"' -f4
            adresse@domaine.fr
            adresse1@domaine.fr
            adresse2@domaine.fr
            et avec guillemets en perl
            lami20j@debian:~$ cat alain | perl -ne 'print ((split /,/)[1],"\n")'
            "adresse@domaine.fr"
            "adresse1@domaine.fr"
            "adresse2@domaine.fr"
            Alain je pense que tu as la sauce complete :-))
            1
            1. Modérateur
              C'est plus une sauce, c'est de la béchamel ;-))

              Pour compléter, avec "grep", mieux vaut prévoir que toutes les adresses ne se termineront pas nécessairement par "fr" et donc anticiper...
              grep -oE '"\w+\@.*\.[a-z]{2,3}"'
              ;-))
              0
          2. je voudrais savoir les syntaxes et les descriptions des commandes suivantes :
            usermod
            mkdir
            lp
            userdel
            service
            chkconfig
            1
            1. Modérateur
              man usermod
              man mkdir
              man lp
              man userdel
              man service
              man chkconfig
              0
          3. Merci wiki :D
            J'ai trouvé, c'est tout simple : il faut ajouter >> nom_du_fichier_texte
            Ce qui donne

            grep -oE '\w+\@\w+\.fr' >> nom_du_fichier_texte.txt 


            Merci
            1
            1. C'est encore moi, tout d'abord, c'est pour dire que j'ai oublié le nom du fichier dans lequel se trouve l'adresse mail à rechercher ce qui donne plutôt

              grep -oE '\w+\@\w+\.fr' nom_du_fichier_ou_se_trouve_les_emails >> nom_du_fichier_de_sauvegarde.txt 


              Deuxièmement, est-il possible de faire cette manipulation directement depuis une page web, bien évidement la commande

              grep -oE '\w+\@\w+\.fr' http://domaine.com/page ne marche pas, mais y a-t-il un autre moyen ?

              Merci à tous (même si je suis un peu seul pour l'instant :D )
              1
              1. Modérateur
                Salut Jean-Paul,

                Essaye ça :
                wget -q -O - URL_de_la_page | grep -oe '\w\+@\w*.\w\+'
                ;-))
                0
            2. Merci beaucoup, ça marche !!

              En fait j'avais trouvé entre temps, sauve que j'étais parti pour faire un fichier .sh avec l'utilisation d'un fichier texte intercalé entre les deux commande grep et wget

              Le seul problème de cette méthode, c'est que la page reste sous forme de html et si dans le code de la page il y a par exemple adresse@domaine.fr<br> comme il n'y a pas d'espace entre .fr et <br> ça ne marche pas !

              @+
              1
              1. Contributeur
                hello
                et en utilisant w3m au lieu de wget
                w3m - a text based Web browser and pager
                w3m [options] [URL or filename]
                1

                Discussions similaires

                question pix mot caché

                7 réponses