SHELL Unix : parcours et concaténation

Résolu/Fermé
dusanone - 19 avril 2010 à 00:49
 dusanone - 19 avril 2010 à 09:40
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 !
A voir également:

3 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
19 avril 2010 à 07:40
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
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
19 avril 2010 à 08:34
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$

:-))
0
Quand j'ai dit : "et ceci pour tous les fichiers" je voulais dire pour chaque combinaison nom/prénom.
0
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 !
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
19 avril 2010 à 09:26
De rien ;-))

PS. Qu'est-ce qu'il fait encore debout à cette heure-ci le Québécois? ;-))
0
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 !
0
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.
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 896
19 avril 2010 à 09:37
Bon courage et bonne chance alors ;-)

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