Kartik M
Kartik M

Reputation: 109

How to extract substring from string with know prefix and suffix using Regex?

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

Answers (1)

anubhava
anubhava

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

Code Demo

Upvotes: 2

Related Questions