Code Files

ldif2csv.awk

Generated on Tue Dec 05 17:39:05 Eastern Standard Time 2006 from ldif2csv.awk


# Program   : LDIF2SCSV.AWK
# Purpose   : Convert LDIF file created by LDAPSEARCH.EXE into a Comma Separated Values file
# Date      : 11 July 2005
# Author    : Bob Jonkman



function unfold(   currentline)   {     currentline = $0 ;
                                        getline ;
                                        while(substr($0,1,1) ~ "[[:space:]]")
                                        {
                                            currentline = currentline ltrim($0) ;
                                            getline ;
                                        }
                                        return(currentline) ;

}


BEGIN   {   ORS   = "" ;
            QUOTE = "\"" ;
            COMMA = "," ;
            QCQ   = QUOTE COMMA QUOTE ;

            # Headers would normally go on the first line
            print(",\n") ;
            
	}



(1)        {    delete record ;
                while ($0 != "")
                {
                    line = unfold() ;  # Ensure we've got the whole multi-line record
                    split(line, field, ":") ;
                   # print("##### DEBUG ##### field[1]= " field[1]);
                   # print("##### DEBUG ##### field[2]= " field[2]);

                    if(!header[field[1]])
                        header[field[1]] = headercount++ ;

                    record[field[1]] = ltrim(field[2]) ;
                }
               # print("##### DEBUG ##### " FNR " EOR");
                delete fieldout ;
                for(i in header)
                    fieldout[header[i]] = i ;

                for(i=1; i < headercount; i++)
                    print(printcsv(record[fieldout[i]]) COMMA ) ;

                print(printcsv(record[fieldout[headercount]]) "\n");
}

END 	{	print("=====\n")				# Output footer (which is actually the headers)
            for(i in header)
                headout[header[i]] = i ;
            
            for(i=1; i<=headercount; i++)
                print(printcsv(headout[i]) COMMA) ;

            print("\n");
	}


# EOF: LDIF2API.AWK

   

1 files processed.