Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1560 connectés 

  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Supprimer les répétitions de caractère

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Shell] Supprimer les répétitions de caractère

n°1891216
bichtoubar​d
Posté le 04-06-2009 à 11:08:55  profilanswer
 

Bonjour,
 
Je fais actuellement du provisionning de masse de mots de passes, et pour cela j'ai besoin d'en générer à la pelle.
 
J'utilise l'outil pwgen qui fonctionne bien, mais qui parfois répète 3 ou 4 fois le même caractère.
 
Exemples :
eer4ieL?
oor]eeCo
 
Comme certains serveurs sont configurés pour n'accepter le même caractère que 2 fois, j'aimerai pouvoir remplacer les n caractère en trop, par une génération d'un nouveau caractère (`pwgen 1 1`)
 
Avez-vous une idée d'une regexp en sed ou autre, qui permettrai de remplacer un caractère a partir de sa troisième apparition ?

mood
Publicité
Posté le 04-06-2009 à 11:08:55  profilanswer
 

n°1891293
pataluc
Posté le 04-06-2009 à 14:15:34  profilanswer
 

tiens je me suis amusé avec ton problème:
 

Code :
  1. awk "{ multicar=0; for (x in t) { t[x]=0 } for(i = 1; i < length($0); i++) { t[substr($0,i,1)]++; if (t[substr($0,i,1)]> 2) { multicar++ } } if (multicar == 0) {    print $0\" OK\" } else {print $0\"  KO !!\"}} " __fichier rempli password__


 
il faut qu'il n'y ait qu'un password par ligne...
 
 
en version détaillée :
 

Code :
  1. awk "
  2. {
  3.   multicar=0;
  4.   for (x in t) {
  5.     t[x]=0
  6.   }
  7.   for(i = 1; i < length($0); i++) {
  8.     t[substr($0,i,1)]++;
  9.     if (t[substr($0,i,1)]> 2) {
  10.       multicar++
  11.     }
  12.   }
  13.   if (multicar == 0) {
  14.     print $0\" OK\"
  15.   } else {
  16.     print $0\"  KO !!\"
  17.   }
  18. } " __fichier rempli password__


Message édité par pataluc le 04-06-2009 à 14:28:02
n°1891305
pataluc
Posté le 04-06-2009 à 14:28:47  profilanswer
 

après je suis parti du principe qu'il était plus simple de ne juste pas afficher le password et d'en générer un autre plutot que de chercher à le corriger...

n°1891381
bichtoubar​d
Posté le 04-06-2009 à 17:45:46  profilanswer
 

C'est beau, en une ligne !
 
J'ai donc au final :

Code :
  1. pwgen -1ycn 8 150 | sed "s/;/`pwgen 1 1`/g" | awk "{ multicar=0; for (x in t) { t[x]=0 } for(i = 1; i < length($0); i++) { t[substr($0,i,1)]++; if (t[substr($0,i,1)]> 2) { multicar++ } } if (multicar == 0) { print \$0 }} "


(j'élimine aussi les ";" pour mon fichier csv).
 
Par contre ça fonctionne pas j'ai quand même un "Vook=oo2" dans la liste :(
 
Merci beaucoup pour ton aide


Message édité par bichtoubard le 04-06-2009 à 17:49:03
n°1891549
pataluc
Posté le 05-06-2009 à 10:30:03  profilanswer
 

ca marche moi avec ce pwd... mais je suis sur un windows avec un portage des commandes unix, ya peut etre donc qques écarts de comportement...
 
sinon, pourquoi tu as mis un \ dans le dernier print?
 
pour débugguer le truc, tu peux passer la commande:

Code :
  1. echo Vook=oo2 | awk "{ multicar=0; for (x in t) { t[x]=0 } for(i = 1; i < length($0); i++) { t[substr($0,i,1)]++; if (t[substr($0,i,1)]> 2) { multicar++ } } if (multicar == 0) { print \$0 } for (x in t) {print x\" \"t[x]}} "


pour voir le contenu du tableau à la fin...

n°1891639
bichtoubar​d
Posté le 05-06-2009 à 13:14:30  profilanswer
 

Oui je vais essayer de debugger cela, en fait je pense que c'est justement un problème entre les \$0 et les $0, pour moi si je laisse $0 il m'affiche juste "0" alors que si je passe \$0 il affiche bien le contenu voulu.
 
A mon avis il faut que je remplace les $0 par des \$0 partout.
 
Je teste tout ça et je te tiens au courant


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Shell/Batch

  [Shell] Supprimer les répétitions de caractère

 

Sujets relatifs
(execve et EFAULT) Shell perso ;)Aménager un shell pour gérer les redirections > et 2>
[Mysql] Ajout d'un caractere "0" sur toutes les valeurs d'un champsSupprimer une ligne dans un fichier
Exécuter un script SHELL grace au CGIInstaller une application sur un serveur grace à un Shell sous Solaris
Récupérer une variable du shell [fpc lazarus debian]Probleme : Tiny_MCE et caractère avec accents
[SQL] Supprimer les entrées d'1 table selon critère d'1 autre tableProblème pour supprimer article en PHP/MySQL
Plus de sujets relatifs à : [Shell] Supprimer les répétitions de caractère


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR