Reputation: 109
The string look likes
string1="userbasedn:DC=i,DC=companyname,DC=com?subtree?(&(objectcategory=person)(uidNumber=*)(|(memberOf:1.2.840.113556.1.4.1941:=cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com)(memberOf:1.2.840.11.1.4.1941:=cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com)))
groupbasedn:DC=i,DC=companyname,DC=com?subtree?(&(objectcategory=group)(gidNumber=*))"
How to extract substring and adding to array like
arr[0]="cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com"
arr[1]="cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com"
From "cn" to "DC=com"
My approach to find substring
re='(^|cn)([^DC=com])(.*)'
remaining=$string1
while [[ $remaining =~ $re ]];
do
...
done
I am using Regex but can't find the proper combination of Posix Character class.
Upvotes: 1
Views: 256
Reputation: 786289
You may use:
mapfile -t arr < <(grep -oE 'cn=[^()]*DC=com' <<< "$string1")
# check array content
declare -p arr
# or using printf
printf '%s\n' "${arr[@]}"
declare -a arr=([0]="cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com" [1]="cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com")
cn=example1,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com
cn=example2,OU=GROUPS,OU=INFRASTRUCTURE,DC=i,DC=companyname,DC=com
Upvotes: 2