SHELL Unix : parcours et concaténation
Résolu
dusanone
-
dusanone -
dusanone -
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 !
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
-
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]$
;-))
-
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$
:-))
-
-
Quand j'ai dit : "et ceci pour tous les fichiers" je voulais dire pour chaque combinaison nom/prénom.
-
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 !