plusieurs chaînes existantes dans un bloc de données en utilisant awk

Je veux tous les noms de domaine (comme dn: uid = srinivas) qui ont plusieurs sn: en utilisant n’importe quelle commande unix. Le contenu de mon fichier est:

dn: uid=srinivas sn: srinivas sn: srinivas-xxx sn: xxxxxxxxxxx cn: srinivas rao g givenname: srinivas dn: uid=geetha sn: geeth cn: geetha b givenname: geetha dn: uid=bhuvana sn: bhuvana sn: bhuvana-xxx cn: xxxxxx givenname: xxxxxxxxx 

pour le contenu de fichier ci-dessus, ma sortie devrait être:

 dn: uid=srinivas dn: uid=bhuvana 

 $ awk -v RS= -F'\n' 'gsub(/\nsn:/,"&")>1{print $1}' file dn: uid=srinivas dn: uid=bhuvana 

un autre awk

 $ awk '/^dn:/{d=$0;c=0} d&&/^sn:/&&2==++c{print d;d=""} ' file dn: uid=srinivas dn: uid=bhuvana