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.