Awk et NR

tchsimons Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   -  
tchsimons Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   -
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?

6 réponses

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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
0
lami20j
 
Salut,

Tu as raison ;-)
0
tchsimons Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
tchsimons Messages postés 191 Date d'inscription   Statut Membre Dernière intervention   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