I am trying to transform an LDAP entry that looks like this:

/cn=Printer1/ou=HR/dc=N/A/dc=fabrikam/dc=com

I am using an awk script and am having a bit of trouble so any help is appreciated.

I am specifically trying to escape the "/" in dc=N/A so that it is quoted like dc="N/A". Actually, I would like to quote everything that is between the "=" and the next "/", so it looks like this.

/cn="Printer1"/ou="HR"/dc="N/A"/dc="fabrikam"/dc="com"

Becasue another issue I am having is related to spaces to the right of the "=".

For example:

/cn=Printer1 Building 1/ou=HR/dc=N/A/dc=fabrikam/dc=com

My algorithinm - right now - is to split the parts into an array at the "=". If the array part contains more than one slash quote the whole thing then print the array part out.

Here is what I have so far:

#!/usr/bin/ksh
DN=/cn=Printer1 Building 1/ou=HR/dc=N/A/dc=fabrikam/dc=com

# Get the number of "=" in the DN and add 1 for the last segment
echo $DN|sed 's/\=/ EQUALS /g'|tr ' ' '\012'|sort|uniq -c|grep EQUALS>count

# this needs to be fixed to include # > 9 - works for now
VAL="$(cut -c4 count)"
VAL=$((VAL+1))

echo $DN | awk -v val=$VAL '{split($1, dnstring, "=");
for (i = 1; i <= val; i++)
print dnstring[i]}'
exit 0


As I have said, any help and/or advice is appreciated.

Thanks,

terryb