Re: aide pour script de chaine de caract
Le Mercredi 30 Janvier 2002 19:22, edouard boucher a écrit :
> > bonsoir, je dois réaliser un script prenant en entré 2 fichier du style :
> > file1
> > user1 : new-pwd
> > user2 : new-pwd
> > ...
> > file2
> > et un fichier de la forme :
> > user1 : old-pwd : autreinfo
> > user2 : old-pwd : autreinfo
> >
> > le but du jeux est d'obtenir
> > user1 : new-pwd : autreinfo
> > user2 : new-pwd : autreinfo
J'avais fait rapidement un script de ce genre une fois :
le voilà un poil adapté : c'est pas très propre, mais ça marche bien si ils
sont dans le même ordre.
Un conseil, faire un sort avant.
Il renvoie sur la sortie d'erreur les erreurs si les usernames ne coïncident
pas
donc si tu fais ./rename pass1.txt passnew.txt > newpass.txt tu verras les
erreurs quand même.
#!/bin/bash
#script de fusion
i=1
while true; do
ligne=$(tail +$i $1 | head -n 1)
ligne2=$(tail +$i $2 | head -n 1)
#arrivé a la fin ?
if test -z "$ligne" && test -z "$ligne2"
then
exit 0
fi
#on identifie les variables
utilisateur=$(echo $ligne | cut -d ":" -f 1)
utilisateur2=$(echo $ligne2 | cut -d ":" -f 1)
info=$(echo $ligne | cut -d ":" -f 3)
newpass=$(echo $ligne2 | cut -d ":" -f 2)
if test "$utilisateur" = "$utilisateur2"
then
echo $utilisateur : $newpass : $info
else
echo Erreur ligne $i : «$utilisateur» != «$utilisateur2» 1>&2
fi
#incrémente
i=$(($i+1))
done
Pierre
Reply to: