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. Quand j'ai dit : "et ceci pour tous les fichiers" je voulais dire pour chaque combinaison nom/prénom.
    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. 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