Se você usar apenas o awk básico, poderá dividir o valor encontrado da variável dn
em partes separadas pela string ",ou="
(assumindo que ou=
não é o primeiro) e procurar por um número (ou obter o segundo item da divisão se você sabe que é sempre esse campo):
n = split(dn,x,",ou=")
for(i=1;i<=n;i++)if(x[i]+0==x[i])v = x[i]
# or just do: v = x[2]
Para sua entrada de exemplo, você obteria no array x
no índice 1, 2 e 3, os valores:
ObjectName=Value
12
Users,dc=example,dc=com
Testamos um número adicionando 0
à string. O awk converte a string para um número (0 se não for um número). Se o resultado for o mesmo da string original, temos um número simples.
Como alternativa, se você tiver o gnu awk, poderá usar gensub
para corresponder ao padrão e capturar com ()
a parte do número, substituindo todo o valor dn
:
v = gensub(".*,ou=([0-9]{1,2}),.*","\1",1,dn)