IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Linux Discussion :

Awk et shell


Sujet :

Linux

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut Awk et shell
    bonjour,

    j'ai un souci en essayant de manipuler 2 fichiers.
    fichier 1 = /etc/shadow
    fichier 2 = /region.passwd

    le fichier 1 contient donc tous les comptes utilisateurs classés I (interne)
    le fichier 2 contient tous les utilisateurs classés I plus d'autres utilisateurs classés E (externe).
    ce qui est fait pour le moment : chaque fois qu'il y a un ajout dans le fichier 1, on le rajoute dans le fichier 2, à la main.
    je souhaiterai dons automatiser ca avec AWK et un peu de shell.mais j'ai qque soucis!
    comment je vois les choses :
    fichier 1 : je le nettoie (pour enlever les comptes spéciaux: pour cela j'ai identifié ces comptes et les ai stocké dans un fichier nommé interdits.txt) et le reformatte de telle sorte "login:passwd"
    manip 1 : pour le formattage j'ai utilisé AWK:
    awk -F":" '{print $1":"$2}' shadow > shadow.nett
    manip 2 : j'ai essaye de faire ca :
    cp shadow.nett nett.txt
    for i in `cat interdits.txt` ; do
    cat nett.txt |grep -v $i >tmp.txt
    cp tmp.txt nett.txt
    rm tmp.txt
    done
    mais ca ne marche pas : j'ai des comptes utilisateurs qui sautent !
    qqu'un peut m'aider ?
    merci d'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    792
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 792
    Par défaut
    Si tu fais un grep négatif (-v) à chaque tour de boucle, il ne nettoiera que le dernier interdit qui passe. Si tu veux utiliser grep il faut te construire un motif avec des alternatives comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -Ev '(interdit1|interdit2) shadow
    Pour construire le motif du grep tu pourrais faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # construction du motif
    for i in $(cat interdits)
    do
        motif="$motif$i|"
    done
     
    # suppression du dernier | superflu et ajout de parenth.
    motif="(${motif%|})"
     
    # grep sur le fichier
    grep -Ev $motif shadow
    Il y a certainement moyen de le faire également avec diff mais je ne me suis jamais retrouvé dans toutes ses options.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    225
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 225
    Par défaut
    merci de ta réponse,
    en fait, les "interdits" sont bien supprimés du fichier 1,
    le souci c'est que j'ai d'autres comptes qui sont supprimés aussi.
    Après avoir bien ramée, j'ai modifié la ligne comme ceci :
    cat nett.txt |grep -v ^$i: >tmp.txt
    en spécifiant donc que le motif etait toujours en debut de ligne et finissant par ":"; et ca marche...

    le probleme est resolu !

    merci,
    nine

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. pb formatage d'un fichier txt avec awk ou SHELL en géneral
    Par ammah dans le forum Applications et environnements graphiques
    Réponses: 1
    Dernier message: 26/09/2008, 15h25
  2. Utilisation d'awk en shell
    Par delovan dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 29/12/2007, 15h50
  3. Réponses: 3
    Dernier message: 18/07/2007, 17h20
  4. script shell : probleme avec sed et awk
    Par salseropom dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 05/06/2007, 11h57
  5. Tableau en paramètre - Shell et Awk
    Par gc243 dans le forum Linux
    Réponses: 7
    Dernier message: 10/12/2003, 13h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo