On Sun, Oct 08, 2017 at 01:47:15PM +0200, Migrec wrote: > Bonjour, > > J'ai un petit soucis de script et je pensais utiliser sed pour le régler > mais mes connaissances sont rudimentaires... Est-ce possible d'afficher le > bloc compris entre MOTIFDEBUT et MOTIFFIN et qui contient MOTIF sur l'une > des lignes ? > > Je veux en gros afficher une entrée d'un fichier LDIF pour une personne en > particulier. Donc les lignes avant et les lignes après jusqu'à la nouvelle > ligne suivante. > > J'ai la fin avec ça : > > $ sed -ne "/MOTIF/,/^$/p" annuaire.ldif > > Sed peut faire ça ?
Salut Migrec, sed, peut-être… perso je ne vois pas, mais peut-être. Par contre, gawk ? Avec les deux fichiers joints (ldif.awk et fichier.ldif) la ligne de commande : $ gawk -v acc_name="smith" -f ldif.awk fichier.ldif extrait l'enregistrement complet de « smith » (passé en argument). Si j'ai bien compris ce que tu voulais obtenir, c'est un petit exemple rudimentaire. -- ___________________ | $ post_tenebras ↲ | waouh! | GNU \ / | \ | -- * -- | o | $ who ↲ / \ |_-- ~_| | Alexandre Hoïde | _/| | -------------------
dn: CN=John Smith,OU=Users,DC=contoso,DC=com proxyAddresses: SMTP:sm...@contoso.com proxyAddresses: smtp:john.sm...@contoso.com proxyAddresses: smtp:jsm...@elsewhere.com proxyAddresses: MS:ORG/ORGEXCH/JOHNSMITH sAMAccountName: smith dn: CN=Tom Frank,OU=Users,DC=contoso,DC=com sAMAccountName: frank proxyAddresses: SMTP:fr...@contoso.com proxyAddresses: smtp:tom.fr...@contoso.com proxyAddresses: smtp:fr...@elsewhere.com proxyAddresses: MS:ORG/ORGEXCH/TOMFRANK dn: CN=John Smith,OU=Users,DC=contoso,DC=com proxyAddresses: SMTP:sm...@contoso.com proxyAddresses: smtp:john.sm...@contoso.com proxyAddresses: smtp:jsm...@elsewhere.com proxyAddresses: MS:ORG/ORGEXCH/JOHNSMITH sAMAccountName: smith
BEGIN { RS = "\n\n" # Record separator: empty line FS = "\n" # Field separator: newline acc_str = "sAMAccountName: " acc_name } { for (i = 1; i <= NF; i++) { if (match($i, acc_str)) { print break } } }