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 :

[shell] Extraction sélective de lignes d'un fichier texte


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut [shell] Extraction sélective de lignes d'un fichier texte
    Bonjour,

    J'ai un fichier texte (extrait d'un annuaire LDAP) comprenant moult identités et toute une série d'attributs se rapportant à chaque identité.

    J'aimerais obtenir un fichier à partir de ce premier fichier, qui ne serait constitué que des attributs utiles (ex : les lignes commençant par displayName, mail, telephoneNumber, etc...) et une ligne de séparation (retour chariot) entre chaque identité. Cette ligne existe déjà dans le fichier d'origine et qui pourrait être copiée.

    Je pense qu'une commande bash ou un petit script serait suffisant, mais je ne maitrise pas assez bien ce langage pour savoir comment m'y prendre.

    Par avance, je vous remercie pour vos propositions.

    Fred

  2. #2
    Membre expérimenté Avatar de fransoo
    Inscrit en
    Novembre 2009
    Messages
    209
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 209
    Par défaut
    Il faudrait nous montrer
    1° Un échantillon du fichier d'entrée
    2° Le fichier de sortie souhaité pour l'échantillon avec évt. quelques explications du pourquoi telle donnée et pas telle autre.
    3° Après : Pas de problème

  3. #3
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut
    Voilà un exemple :

    dn: uid=personne1,ou=personnes
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: mefiPersonne
    objectClass: dgcpPersonne
    objectClass: posixAccount
    objectClass: sambaAccount
    objectClass: inetLocalMailRecipient
    acctFlags: [UX ]
    affectation: 093000
    annexe: 0
    cn: Personne1
    codeFonction: 00000
    codeGrade: 4018112206
    departement: 93
    destinationIndicator: pop
    destinationIndicator: sieve
    displayName: Personne1
    gestion: SDT
    gidNumber: 99
    givenName: Prenom
    homeDirectory: /dev/null
    idHraccess: 000000845870
    idMinef: 123456789
    kickoffTime: 2147483647
    loginShell: /bin/false
    logoffTime: 2147483647
    logonTime: 0
    mail: personne1@xxx.fr
    mail: personne1@yyy.fr
    ouSigle:: RERGaVAgU0VJTkUtU0FJTlQtREVOSVMvOTMgU2VpbmUgU2FpbnQgRGVuaXMvU2Vydm
    ljZXMgZMOpY29uY2VudHLDqXMvREdDUA==
    primaryGroupID: 1199
    pwdCanChange: 0
    pwdLastSet: 1156672884
    pwdMustChange: 2147483647
    rid: 125862
    uid: personne1
    uidFonctionnel: personne1
    uidNumber: 62431
    uneLettre: Z

    dn: uid=personne2,ou=personnes
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    objectClass: inetOrgPerson
    objectClass: mefiPersonne
    objectClass: dgcpPersonne
    objectClass: posixAccount
    objectClass: sambaAccount
    objectClass: inetLocalMailRecipient
    acctFlags: [UX ]
    affectation: 813053
    annexe: 0
    cn: personne2
    codeFonction: 1037
    codeGrade: 2015512108
    departement: 93
    destinationIndicator: pop
    destinationIndicator: sieve
    destinationIndicator: agenda
    destinationIndicator: tb
    displayName: personne2
    extendedPhone: 35 354
    fonction: ANALYSTE
    gidNumber: 99
    givenName: Prenom
    homeDirectory: /dev/null
    idHraccess: 000000812164
    idMinef: 12345678
    kickoffTime: 2147483647
    l: NOISY LE GRAND
    loginShell: /bin/false
    logoffTime: 2147483647
    logonTime: 0
    mail: personne2@xxx.fr
    mail: personne2@yyy.fr
    mefiPointMajF: ttt
    officeName:: REdGaVAgTUlTU0lPTiBTSVJISVVTIA==
    personalTitle:: TSAgIA==
    primaryGroupID: 1199
    pwdCanChange: 0
    pwdLastSet: 1156672863
    pwdMustChange: 2147483647
    rid: 125736
    roomNumber: 3321
    sn: Nom
    title:: SU5TUEVDVEVVUiBEVSBUUkVTT1IgUFVCTElDICAg
    uid: personne2
    uidFonctionnel: personne2
    uidNumber: 62368
    uneLettre: Y
    Les fiches n'ont pas toutes les mêmes attributs - car les personnes ont des statuts souvent fort différents - mais je n'en veux que certains, qui, eux, apparaissent normalement sur chaque fiche (ex : displayName, uid, mail, ...).

    Si certains attributs apparaissent en double, je les prends aussi.

    En sortie, pour l'extrait ci-dessus, cela donnerait par exemple (avec la ligne vide de séparation) :

    departement: 93
    displayName: Personne1
    mail: personne1@xxx.fr
    mail: personne1@yyy.fr
    uid: personne1

    departement: 93
    displayName: personne2
    mail: personne2@xxx.fr
    mail: personne2@yyy.fr
    uid: personne2
    Voilà voilà...

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 684
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 684
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -rn '/departement:|displayName:|mail:/p; /uid:/s/.*/&\n/p' input
    bof bof...
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2004
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juillet 2004
    Messages : 33
    Par défaut
    Ca marche, c'est parfait.

    Merci.

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

Discussions similaires

  1. Shell + awk sommer des lignes de plusieurs fichiers
    Par erara22 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 23/01/2012, 12h58
  2. [Batch] Extraction de la première ligne d'un fichier texte?
    Par brolon dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 12/05/2010, 14h35
  3. Extraction ligne d'un fichier text
    Par bhahmed dans le forum C++Builder
    Réponses: 17
    Dernier message: 06/09/2006, 11h07
  4. extraction d'une ligne d'un fichier txt
    Par tim69000 dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 19/01/2006, 15h28
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

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