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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [resolu]script bash, problème de jointure

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[resolu]script bash, problème de jointure

n°776855
dem0ntibul
Posté le 29-01-2006 à 21:23:05  profilanswer
 

bonjour amis HFRiens et HFRiennes,  
 
Comme le dit le sujet, j'ai un problème de jointure. Parce que de longs discours ne valent pas mieux que du code, voila le script :

Code :
  1. #!/bin/bash
  2. sort -t: -n -k4 /etc/passwd -o tripasswd
  3. cut -d : -f1,3 /etc/group | sort -t: -n -k2 -o trigroup
  4. join -t: -1 4 -2 2 -a 1 -e "--ERR GROUP--" tripasswd trigroup > jointureA


 
Le but de la jointure est d'affichier pour toutes mes lignes du fichier /etc/passwd le nom du groupe associé.
Pour cela je trie d'abord le fichier /etc/passwd sur le champ 4 qui correspond au GID
Ensuite je coupe le champ 3 (parce que souvent vide) du fichier /etc/group et le trie sur le champ 2 qui correspond au GID
Maintenant la jointure et les soucis, elle se passe pour le premier fichier sur le champ 4 et pour le second sur le champ 2 et je veux affichier --ERR GROUP-- si un champ vide est détecté. Hors la jointure se passe mal ! Toutes les lignes ne sont pas affichées.
J'ai été obligé d'ajouter l'option -a 1 pour affichier les lignes non appariées (qui ne peuvent être mises ensembles, mais pourquoi???). Voici une partie de mon fichier jointureA :
 

Code :
  1. 0:halt:x:7:halt:/sbin:/sbin/halt:root
  2. 0:operator:x:11:operator:/var:/bin/sh:root
  3. 0:root:x:0:root:/root:/bin/bash:root
  4. 0:shutdown:x:6:shutdown:/sbin:/sbin/shutdown:root
  5. 0:suisa:x:0:isabelle:/home/root/suisa:/bin/bash:root
  6. 0:sumarc:x:0:marc:/root:/bin/bash:root
  7. 0:suoli:x:0:olivier:/home/root/suoli:/bin/bash:root
  8. 0:suseb:x:0:seb:/home/root/suseb:/bin/bash:root
  9. 0:sync:x:5:sync:/sbin:/bin/sync:root
  10. 1:bin:x:1:bin:/bin:/bin/sh:bin
  11. 2:daemon:x:2:daemon:/sbin:/bin/sh:daemon
  12. 4:adm:x:3:adm:/var/adm:/bin/sh:adm
  13. 7:lp:x:4:lp:/var/spool/lpd:/bin/sh:lp
  14. 12:mail:x:8:mail:/var/spool/mail:/bin/sh:--ERR GROUP--
  15. 13:news:x:9:news:/var/spool/news:/bin/sh:--ERR GROUP--
  16. 14:uucp:x:10:uucp:/var/spool/uucp:/bin/sh:--ERR GROUP--
  17. 69:vcsa:x:69:virtual console memory owner:/dev:/sbin/nologin:--ERR GROUP--
  18. 70:xfs:x:70:system user for XFree86:/etc/X11/fs:/bin/false:--ERR GROUP--
  19. 71:apache:x:71:system user for apache2:/var/www:/bin/sh:--ERR GROUP--


 
Cela marche correctement pour les 7 premiers groupes alors que le tri du fichier /etc/passwd est comme ceci (je ne mets pas toutes les lignes volontairement car trop long) :

Code :
  1. root:0
  2. bin:1
  3. daemon:2
  4. sys:3
  5. adm:4
  6. tty:5
  7. disk:6
  8. lp:7
  9. mem:8
  10. kmem:9
  11. wheel:10
  12. mail:12
  13. news:13
  14. uucp:14
  15. man:15
  16. floppy:19
  17. games:20
  18. cdrom:22
  19. utmp:24
  20. usb:43
  21. vcsa:69
  22. xfs:70
  23. apache:71


 
et le tri du fichier /etc/passwd comme ca :

Code :
  1. halt:x:7:0:halt:/sbin:/sbin/halt
  2. operator:x:11:0:operator:/var:/bin/sh
  3. root:x:0:0:root:/root:/bin/bash
  4. shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
  5. suisa:x:0:0:isabelle:/home/root/suisa:/bin/bash
  6. sumarc:x:0:0:marc:/root:/bin/bash
  7. suoli:x:0:0:olivier:/home/root/suoli:/bin/bash
  8. suseb:x:0:0:seb:/home/root/suseb:/bin/bash
  9. sync:x:5:0:sync:/sbin:/bin/sync
  10. bin:x:1:1:bin:/bin:/bin/sh
  11. daemon:x:2:2:daemon:/sbin:/bin/sh
  12. adm:x:3:4:adm:/var/adm:/bin/sh
  13. lp:x:4:7:lp:/var/spool/lpd:/bin/sh
  14. mail:x:8:12:mail:/var/spool/mail:/bin/sh
  15. news:x:9:13:news:/var/spool/news:/bin/sh
  16. uucp:x:10:14:uucp:/var/spool/uucp:/bin/sh
  17. vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
  18. xfs:x:70:70:system user for XFree86:/etc/X11/fs:/bin/false
  19. apache:x:71:71:system user for apache2:/var/www:/bin/sh


 
Si quelqu'un voit pourquoi cela ne marche pas pour toutes les lignes, je suis preneur. j'ai déjà testé -a2 cela fait pratiquement la mêmes chose, je sèche
 
merci^^


Message édité par dem0ntibul le 31-01-2006 à 20:13:08
mood
Publicité
Posté le 29-01-2006 à 21:23:05  profilanswer
 

n°777536
dem0ntibul
Posté le 31-01-2006 à 20:12:17  profilanswer
 

résolu, en fait il ne faut pas trier numériquement.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [resolu]script bash, problème de jointure

 

Sujets relatifs
ouvrir une video en .asf avec WMP probleme de codecPour "echo-iser" un script ?
[resolu] acpi qui marche pas sous debianDebian testing / Xorg / Matrox G200 / probleme de curseur
Problème alias script liste packagesprobleme de son
problème de qualité de lecture des ogg avec vlcProblème de compilation
Probleme lecture xmms 
Plus de sujets relatifs à : [resolu]script bash, problème de jointure


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