Test sur une liste de nom.prenom ds 1 fichier
Fermé
tchobec
Messages postés
2
Date d'inscription
mercredi 29 juin 2005
Statut
Membre
Dernière intervention
25 juillet 2008
-
28 nov. 2007 à 17:08
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 28 nov. 2007 à 20:39
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 28 nov. 2007 à 20:39
A voir également:
- Test sur une liste de nom.prenom ds 1 fichier
- Test performance pc - Guide
- Liste déroulante excel - Guide
- Fichier rar - Guide
- Fichier host - Guide
- Comment ouvrir un fichier epub ? - Guide
2 réponses
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
3 février 2022
426
28 nov. 2007 à 17:55
28 nov. 2007 à 17:55
Bonsoir,
Peut-être que le script suivant t'arrangera:
Pour tout les lignes du fichier des comptes du proxy (mot de passe enlevé (cut -f1 -d':' n'affiche que le champ 1 avec comme séarateur de champ le ":")) on assigne la partie de la ligne avant le "." au nom, et la partie aprés le point au prénom.
Si, on trouve nom.prenom ou prenom.nom (le pipe "|" dans egrep signifie OU) dans la liste du personnel on ne fait rien, SINON ("||" en bash) on appel sed et on lui demande de remplacer dans le fichier listecompteproxy.resultat "$nom.$prenom" par "#$nom.$prenom" et "$prenom.$nom" par "#$prenom.nom".
La redirection vers /dev/null (>/dev/null 2>&1) permet de ne pas afficher le resultat de grep (on s'en moque on veut simplement savoir si oui ou non le grep a trouver quelque chose...)
NOTA: je considère que les fichiers sont dédoublonnés, sinon, ça risque de faire des trucs bizarre ;-)
Si tu as besoin de plus d'info sur les commandes utilisées, tu as biensur les man, mais n'hésite pas a redemander dans ce message.
PS: c'est une solution, mais il y en a plein d'autres! ;)
++
Peut-être que le script suivant t'arrangera:
#!/bin/bash for ligne in $(cut -f1 -d':' listecomptesproxy ); do nom=${ligne/.*/} prenom=${ligne/*./} cp listecomptesproxy listecomptesproxy.resultat egrep "$nom.$prenom|$prenom.$nom" listepersonnel >/dev/null 2>&1 || sed -i -e "s/\($nom.$prenom\)/#\1/" -e "s/\($prenom.$nom\)/#\1/" listecomptesproxy.resultat doneEn gros:
Pour tout les lignes du fichier des comptes du proxy (mot de passe enlevé (cut -f1 -d':' n'affiche que le champ 1 avec comme séarateur de champ le ":")) on assigne la partie de la ligne avant le "." au nom, et la partie aprés le point au prénom.
Si, on trouve nom.prenom ou prenom.nom (le pipe "|" dans egrep signifie OU) dans la liste du personnel on ne fait rien, SINON ("||" en bash) on appel sed et on lui demande de remplacer dans le fichier listecompteproxy.resultat "$nom.$prenom" par "#$nom.$prenom" et "$prenom.$nom" par "#$prenom.nom".
La redirection vers /dev/null (>/dev/null 2>&1) permet de ne pas afficher le resultat de grep (on s'en moque on veut simplement savoir si oui ou non le grep a trouver quelque chose...)
NOTA: je considère que les fichiers sont dédoublonnés, sinon, ça risque de faire des trucs bizarre ;-)
Si tu as besoin de plus d'info sur les commandes utilisées, tu as biensur les man, mais n'hésite pas a redemander dans ce message.
PS: c'est une solution, mais il y en a plein d'autres! ;)
++
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
28 nov. 2007 à 20:39
28 nov. 2007 à 20:39
Salut,
$ cat listepersonnel titi.aaa tete.ccc tutu.eee $ cat listecompteproxy titi.aaa:jgkjiofgu toto.bbb:yuyuiyui tete.ccc:jekj2sdf tata.ddd:uiouiohjk tutu.eee:2ds5Adf $ for i in $(cat listecompteproxy|cut -d':' -f1|comm -2 listepersonnel -);do grep $i listecompteproxy;done titi.aaa:jgkjiofgu tete.ccc:jekj2sdf tutu.eee:2ds5Adf