Awk et NR

Fermé
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 - 17 janv. 2010 à 12:34
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 - 18 janv. 2010 à 21:46
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

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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 janv. 2010 à 13:18
0
Salut,

Tu as raison ;-)
0
tchsimons Messages postés 191 Date d'inscription samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 14
17 janv. 2010 à 14:54
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
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
17 janv. 2010 à 15:10
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 samedi 3 mai 2008 Statut Membre Dernière intervention 24 novembre 2012 14
18 janv. 2010 à 21:46
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