Awk et NR

tchsimons Messages postés 207 Statut Membre -  
tchsimons Messages postés 207 Statut Membre -
bonjours à tous .
je voudrais ecrire un programme AWK qui manipule le fichier /etc/passwd.
ce programme prend en paramettre un UID et affiche la ligne sur laqeulle cet uid se trouve.
comment je peus procéder?
Configuration: Windows XP
Safari 532.0

6 réponses

  1. lami20j
     
    Salut,

    lami20j@debian:~$ awk -F':' '$3==1000 {print NR}' </etc/passwd
    27


    Vérification
    lami20j@debian:~$ awk 'NR==27 {print}' </etc/passwd
    lami20j:x:1000:1000:lami20j,,,:/home/lami20j:/bin/bash
    0
  2. tchsimons Messages postés 207 Statut Membre 14
     
    je comprend pas très bien votre Problème, en plus c'est de l'auto apprentissage, pas des exos de l'ecole.Les choses ne sont pas encore bien fixés dans ma tete , raison pour laquelle je suis ici.La solution de de lami20j , je l'avais deja , sauf que je voudrais l'utiliser pour autre chose dans un script shell qui a des parametres , parmis lesquel ce uid.voici un peu ce que j'ai dans le script:

    ...
    ...
    ...
    var=$2 #$2 étant supposé contenir le valeur de l'uid
    line=$(awk -F":" '$3==var {print NR}' </etc/passwd) #je compare var aux troisièmes champs
    echo $line #Pour afficher la valeur de la ligne
    ...
    ...
    ...

    Le probleme au final est que je n'ai pa cette valeur de line affichée à l'écran.
    Que dois je faire SVP.
    0
  3. lami20j
     
    Salut,

    La solution de de lami20j , je l'avais deja , sauf que je voudrais l'utiliser pour autre chose dans un script shell qui a des parametres , parmis lesquel ce uid.voici un peu ce que j'ai dans le script:

    Ben, tu vois qu'on ne peux pas savoir ce que tu veux si tu ne montre pas ce que tu as fait et dire ce que tu veux.

    Essaie comme ça
    #!/bin/bash
    
    var=1000
    line=$(awk -F":" '$3=="'$var'" {print NR}' </etc/passwd)
    echo $line
    0
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Désolé pour la remontrance, mais étant donné qu'en ce moment les posts dans ce genre et émanant d'Afrique sont légion, je préfère prendre les devants...

    Sinon :

    #! /bin/sh
    
    #set -xv
    
    awk -F":" -v var=$2 '$3 == var { print "Ligne N° : "NR }' < /etc/passwd
    

    0
  6. tchsimons Messages postés 207 Statut Membre 14
     
    merci les gars cela m'a aidé.
    sauf que maintenant je vouvrais remplacer le texte de la ligne extraite par un autre.
    voila ce que je fait ,mais je remarque aucun chagement dans mon fichier.

    .........
    .........
    v2="toto travaille"
    awk -v var1=line var2=v2 'NR=var1{print var2}' fich.
    ..........
    ..........
    Aurez vous une méthode?
    0