#!/bin/bash

# inma@usal.es
# 27-04-2012
#Se utiliza: ./ldif_a_csv.sh fichero_atributos.txt  fichero.ldif

#Se crear el fichero awk a partir de un fichero con los atributos 
#que nos interesen, en el orden adecuado, cada attributo en una linea
#para utilizarlo:   awk -f $nomAwk fichero.ldif 

if [ $# -ne 2 ]
then
  echo "Se utiliza: $0 fichero_atributos.txt  fichero.ldif"
  exit -1
fi
fichAttr=$1
fichLdif=$2
nomAwk="ldif_a_csv.awk"
tmp="tmp.txt"

if [ ! -e "$fichAttr" ] ;then
  echo "****ERROR NO EXISTE el fichero $fichAttr******"
  exit -1
fi

if [ ! -e "$fichLdif" ] ;then
  echo "****ERROR NO EXISTE el fichero $fichLdif******"
  exit -1
fi

rm $nomAwk

echo 'function print_attr(atributo ){

     for ( aa in atributo){
           if ( aa > 1 )  printf("_+_%s",atributo[aa])
           else printf("%s",atributo[aa])
           delete atributo[aa]
        }
     printf("|")
}
'>> $nomAwk

echo 'function user(){ ' >> $nomAwk 
cat $fichAttr | while read aa; do echo "print_attr($aa)"; done >> $nomAwk
echo '
  printf("\n")
}' >> $nomAwk

echo '
BEGIN { 
' >> $nomAwk
i=1; cat $fichAttr |while read aa; do p="$p$i $aa|"; echo $p >$tmp; let i=$i+1;  done
cabecera=`cat $tmp`
echo "   printf(\"$cabecera\")
     printf(\"\n\")
 }" >> $nomAwk


cat $fichAttr |while read aa; do echo "/^$aa:/ {$aa[++ii_$aa]="'$2}'; done >> $nomAwk

echo '/^dn/ {
        user()
 ' >> $nomAwk

cat $fichAttr |while read aa; do echo "ii_$aa = 0 "; done >> $nomAwk

echo '
}

# Captura ultimo dn
END {
        user()
}
' >> $nomAwk


awk -f $nomAwk $fichLdif


