Modifier un fichier texte commande unix

Résolu
alain -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
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. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention  
         
        D'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. ekra Messages postés 1873 Statut Membre 342
     
    Bonjour,

    essaie ceci :

    cut -d "," -f2 fichier

    2
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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
  4. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Belmondo
     
    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
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      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
  8. patco
     
    je voudrais savoir les syntaxes et les descriptions des commandes suivantes :
    usermod
    mkdir
    lp
    userdel
    service
    chkconfig
    1
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      man usermod
      man mkdir
      man lp
      man userdel
      man service
      man chkconfig
      0
  9. Belmondo
     
    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
  10. Belmondo
     
    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. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Salut Jean-Paul,

      Essaye ça :
      wget -q -O - URL_de_la_page | grep -oe '\w\+@\w*.\w\+'
      ;-))
      0
  11. Belmondo
     
    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
  12. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    hello
    et en utilisant w3m au lieu de wget
    w3m - a text based Web browser and pager
    w3m [options] [URL or filename]
    1