IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Awk - Traiter chaque ligne du fichier passwd


Sujet :

Linux

  1. #1
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut Awk - Traiter chaque ligne du fichier passwd
    bonjour,
    j'aimerais faire un petit script qui, pour chaque ligne du fichier passwd, appelle un autre script avec des paramètres.
    j'ai un petit script (script1) qui prend en paramètre le nom d'utilisateur et le nom "long" de cet utilisateur. Il s'agit des colonnes 1 et 5 du fichier passwd.
    je veux executer ce script pour chaque ligne de passwd
    j'ai vu qu'il serait peut etre possible de le faire avec awk, mais malgre mes recherches je trouve pas la syntaxe exacte...
    cela ressemblerai à :
    awk 'BEGIN { FS=":" } { print $1 $5 }' passwd (cette commande marche)
    mais avec le nom de mon script à la place de print...
    merci d'avance si vous savez comment faire.
    (je suis ouvert à d'autres solutions techniques que awk ...

  2. #2
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    j'ai cherché encore et j'ai trouver :
    awk 'BEGIN { FS=":" } { system("script "$1" "$5"") }' passwd
    ...enfin presque...
    le problème est que dans le $5 (le nom long de l'utilisateur), il y a parfois des parenthèses et donc ca marche pas, j'ai l'erreur :
    Syntax error: "(" unexpected
    ca vient surement du fait que tout est réuni dans une meme commande...
    je doute de plus en plus de réussir a faire ce que je veux avec awk... donc si quelqu'un a une proposition, je suis preneur !
    merci

  3. #3
    Membre habitué

    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 166
    Points
    166
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN { FS=":" } { cmd="mon_echo " $1 " " $5; print "cmd : " cmd; system(cmd)  }' /etc/passwd
    Juste pour tester, ma commande mon_echo fait simplement echo de ce qu'on lui envoie, et ça fonctionne...
    C'est quoi au juste ton problème ? peux-tu mettre les affichages intermédiares pour mieux voir ce qui ne va pas ?

  4. #4
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    ma commande marche parfaitement quand les chaines de caractere du fichier traité n'ont pas de parenthèses.
    awk 'BEGIN { FS=":" } { system("./test "$1" "$5"") }' passwd
    mais lorsque que le nom complet de l'utilisateur comporte des parenthèses, j'ai cette erreur :
    Syntax error: "(" unexpected
    pour l'instant j'ai pas mis le vrai script, juste un script qui affiche ce qu'on lui passe en paramètres. et pour chaque ligne traitée qui comporte une parenthèse, j'ai cette erreur.
    voila...

  5. #5
    Membre habitué

    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 166
    Points
    166
    Par défaut
    Ah oui ! pardon : j'avais lu un peu vite ton second message...
    Dans ce cas, il faut mettre les arguments génant entre guillemets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk 'BEGIN { FS=":" } { cmd="mon_echo " $1 " \"" $5 "\""; print "cmd : " cmd; system(cmd)  }' passwd
    Ca marche pas mieux comme ça ?

  6. #6
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    merci ca marche nickel !!!
    vraiment merci Anne

  7. #7
    Membre habitué

    Femme Profil pro
    Développeur informatique
    Inscrit en
    Février 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 59
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2004
    Messages : 58
    Points : 166
    Points
    166
    Par défaut
    Vraiment de rien 8)
    Je ne peux quand même pas laisser dire ça :
    Citation Envoyé par tonyLyon
    je doute de plus en plus de réussir a faire ce que je veux avec awk...

  8. #8
    Membre habitué Avatar de tony montana
    Profil pro
    Inscrit en
    Février 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 114
    Points : 136
    Points
    136
    Par défaut
    lol
    je connaissais que de nom au debut awk, et je savais pas que c'etait aussi poussé
    mais en cherchant un peu et surtout grâce à toi j'ai trouvé ce qu'il me fallait.
    encore merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 11/03/2010, 15h44
  2. Traiter chaque ligne du résultat d'une commande
    Par 84mickael dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 26/02/2008, 14h30
  3. Modifer un fichier en ajoutant le numéro de chaque ligne
    Par bellout dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 15/06/2006, 13h43
  4. [BATCH] lire chaque ligne d'un fichier texte
    Par bartmarley dans le forum Windows
    Réponses: 13
    Dernier message: 22/04/2005, 21h01
  5. Réponses: 4
    Dernier message: 19/06/2004, 22h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo