Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/11/2007, 10h12   #1
Invité de passage
 
Inscription : septembre 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 13
Points : 4
Points : 4
Par défaut aide avec awk

Bonjour,

J'essai d'utiliser une commande awk pour supprimer un utilisateur d'un fichier passwd possédant cette structure :


Code :
1
2
3
4
5
6
7
8
9
### This file is an example password file for svnserve.
### Its format is similar to that of svnserve.conf. As shown in the
### example below it contains one section labelled [users].
### The name and password for each user follow, one account per line.
[users]
harry = harryssecret
sally = sallyssecret
yann = yannux
florian = florian

J'ai écris un script bash contenant les lignes suivantes :

Code :
1
2
3
mv passwd passwd.bak
 
awk '/[^^'$USERNAME' =]/ {print $0}' passwd.bak > passwd
La commande awk est censée afficher toutes les lignes du fichier passwd.bak sauf celle débutant par le username. Le problème est que ce script ne fonctionne qu'avec le username florian et pas pour les autres.

Quelqu'un a-t-il une idée de la bonne expression régulière à utiliser ?

Merci d'avance,

Yann.
Yanux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 10h28   #2
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Je ne connais pas assez awk pour t'aider, mais tu peux le faire simplement avec perl ou sed aussi...

Indice :
Code :
1
2
3
 
perl -pi -e 'regexp' fichier
sed 'regexp' fichier > sortie
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 10h43   #3
Invité de passage
 
Inscription : septembre 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 13
Points : 4
Points : 4
Merci pour ta réponse.

Cependant mon problème se situe au niveau de l'expression régulière à utiliser, et non pas sur l'outil que j'utilise :-)

Avec sed ou perl j'aurais le même problème, à savoir que je ne suis pas très doué avec les expressions régulières ;-)
Yanux est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2007, 16h08   #4
Membre Expert
 
Avatar de Anthony.Desvernois
 
Homme Anthony Desvernois
Ingénieur sécurité & risque
Inscription : juin 2007
Messages : 1 501
Détails du profil
Informations personnelles :
Nom : Homme Anthony Desvernois
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Ingénieur sécurité & risque
Secteur : Finance

Informations forums :
Inscription : juin 2007
Messages : 1 501
Points : 2 011
Points : 2 011
Oh ^^ ok

Code :
REGEXP=s/${USERNAME} = [^ \\t]+\$ # me semble pas mal (a tester).
man regexp sinon
__________________
"Voyager, c'est découvrir que tout le monde a tort", Aldous Huxley
"Less is more" Ludwig Mies Van Der Rohe

Risk & Security Mgmt
Anthony.Desvernois est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2007, 08h40   #5
Invité de passage
 
Inscription : septembre 2006
Messages : 13
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 13
Points : 4
Points : 4
Merci de ton aide. Finallement j'ai trouvé un truc beaucoup plus simple :

Code :
cat passwd | grep -v "$USERNAME =" > passwd
Merci encore,

Yann.
Yanux est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h11.


 
 
 
 
Partenaires

Hébergement Web