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

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Utiliser les resultat de commande `cat titi` dans awk

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Utiliser les resultat de commande `cat titi` dans awk

n°648542
weed
Posté le 12-03-2005 à 03:35:23  profilanswer
 

voilou j'ai un fichier list de la forme  
 

Citation :


Alex       B         abt     boatt   polesi  /home
Eric      L        lfd     lle      polesi  /home/eci


 
 
j'aimerais savoir si les utilisateurs presents dans ce fichiers sont des utilisateurs systèmes. S'ils sont absents du /etc/passwd, je l'ai ajoute.
 
 
j'ai fais un fichier list.awk pour lister les utilisateurs : awk -f list.awk list

Code :
  1. {
  2.     print $1
  3. }


 
 
mais comment puis je faire le test si le user est deja present dans /etc/passwd ?
Je peux faire par exemple

Code :
  1. {
  2.     if ( `cat /etc/passwd | cut -d ":" -f 1 | grep -c $1` = 1)
  3.     {
  4.         print $1 est deja present;
  5.     }
  6.     else
  7.     { 
  8.         adduser $1
  9.     }
  10. }


mais je trouve ca un peu cochon.
 
 
 Y aurait pas moyen de faire un peu plus propre comme par exemple mettre dans la copndition :

Code :
  1. awk -F":" '{ if ($1=="Alex" ) print $1}' /etc/passwd


Alex une chaine chaine mais comment le remplacer par la variable du list.awk
 
 
Comment fait on pour utiliser pour les variables dans un autre awk ?
 
Quel est la solution la plus elegante ?


Message édité par weed le 12-03-2005 à 14:20:15
mood
Publicité
Posté le 12-03-2005 à 03:35:23  profilanswer
 

n°648556
couak
Posté le 12-03-2005 à 09:48:08  profilanswer
 

tu es obligé d'utiliser awk ? A la limite ca peut se faire avec une boucle for toute bête
 
à tester :

Code :
  1. PID=$$;
  2. cat /etc/passwd | cut -d":" -f1 > /tmp/passwd_$PID
  3. for i in `cat fichier_liste.txt | awk '{ print $1 }'`
  4. do
  5.     grep $i /tmp/passwd_$PID || adduser $i
  6. done
  7. rm /tmp/passwd_$PID


par contre ca passe par un fichier temporaire :/ je suis sûr qu'il y a un moyen de faire plus simple

n°648675
weed
Posté le 12-03-2005 à 14:13:48  profilanswer
 

yep je preferais quand utiliser awk car j'aimerais utiliser les autres champs au fur et a mesure pour d'autre test

n°648676
weed
Posté le 12-03-2005 à 14:16:04  profilanswer
 

ce qui est bizzare je peux meme pas utiliser de commande avec les ` ` dans un awk
 

Code :
  1. {
  2.         test=`cat /etc/passwd | cut -d ":" -f 1 | grep -c $1`;
  3.         if ( $test == 1 )
  4.         { print present;
  5.         }
  6. }


 
 
j'obtiens le message d'erreur suivant :

Citation :

awk: 2: unexpected character '`'


 
 
c'est bien dommage car cela limite drolement l'utilisation de awk. Je pense que je me suis trompé car c'est pas possible qu'il y ait autant de restriction ...


Message édité par weed le 12-03-2005 à 14:16:27

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

  Utiliser les resultat de commande `cat titi` dans awk

 

Sujets relatifs
Galère pour utiliser le Wifi de mon écoleutiliser une partition de DD formaté par knoppix pour xp
commande pour installation d'un speedtouchcherche sujet interessant sous linux (ligne de commande)
La commande lsusbpetite question sur commande chmod et droit d'acces
Problème avec commande LinuxDonnées de la commande "free" [répondu]
Commande Linux 
Plus de sujets relatifs à : Utiliser les resultat de commande `cat titi` dans awk


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