SHELL Unix : parcours et concaténation

Résolu
Bonjour à tous,

Je débute avec le SHELL Unix et je bute sur un problème qui pourtant paraît simple. J'ai un fichier contenant des chaînes de caractères sous cette forme :

#commentaire 1
nom1 prenom1
nom2 prenom3
#commentaire2
nom3 prenom3
nom4 prenom4
...

Je souhaite parcourir ce fichier pour en afficher uniquement les 4 premiers caractères du nom et les 3 premiers caractères du prénom pour chaque personne, tout en minuscule, et d'ajouter à la fin de chaque personne "@monemail.ch".

Par exemple si le premier nom est Dubois et le premier prénom est Marc je voudrais avoir en sortie : dubomar@monemail.ch

.. et ceci pour tous les fichiers, tout en omettant les commentaires.

J'ai fait des tests en mixant sed et grep mais j'y arrive vraiment pas, tout aide sera donc fortement appréciée.

Merci d'avance pour vos indications !

3 réponses

  1. Modérateur
    Salut,

    Un exemple parmi tant d'autres, avec "sed" :

    [tmpfs]$ cat plop
    #commentaire 1
    nom1 prenom1
    nom2 prenom3
    #commentaire2
    nom3 prenom3
    nom4 prenom4
    
    [tmpfs]$ sed -n '/^#/!{s/\(....\) \(...\).*/\1\2@monemail.ch/p}' plop
    nom1pre@monemail.ch
    nom2pre@monemail.ch
    nom3pre@monemail.ch
    nom4pre@monemail.ch
    
    [tmpfs]$

    ;-))
    1. Modérateur
      Un autre exemple en bash :

      jp@MDK:~/tmpfs ssh$ cat foo.sh
      #! /bin/sh
      
      #set -xv
      
      sed '/^#/d' plop | while read nom prenom
      do
      echo "${nom: :4}${prenom: :3}@monemail.ch"
      done
      
      jp@MDK:~/tmpfs ssh$ ./foo.sh
      nom1pre@monemail.ch
      nom2pre@monemail.ch
      nom3pre@monemail.ch
      nom4pre@monemail.ch
      
      jp@MDK:~/tmpfs ssh$

      :-))
  2. Quand j'ai dit : "et ceci pour tous les fichiers" je voulais dire pour chaque combinaison nom/prénom.
    1. Salut jipicy,

      Un grand merci à toi pour cette réponse rapide !

      Vraiment excellent et en fait c'est assez simple fallait juste que je bosse plus sed :x

      Merci encore !
      1. Modérateur
        De rien ;-))

        PS. Qu'est-ce qu'il fait encore debout à cette heure-ci le Québécois? ;-))
      2. Il révise son examen de demain et tu viens de me sauver pour la dernière question de mon devoir ;)

        Puis suis Suisse mais vis au Québec ouais :p

        Merci encore j'ai vu que tu répondais souvent ici et tes réponses sont tjrs excellentes et m'ont déjà bcp apportées !
      3. Btw en utilisant la deuxième soluce il n'omet pas les lignes de commentaire, mais ça va se gérer en 2 sec c'est un détail.
      4. Modérateur
        Bon courage et bonne chance alors ;-)

        PS. Dors un peu quand même ;-)
      5. J'imprime et go dodo la :D