Awk et NR

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. 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
    1. 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.
      1. 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
        1. Modérateur
          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
          

          1. 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?