A maneira mais fácil é definir o separador de campo como ":"
awk -F":" '$2~/user/{print $1}' /etc/userdomains
And if you want to check for exact username,
awk -F"[ \t]*:[ \t]*" '$2=="user"{print $1}' /etc/userdomains
awk '/user/ {print $1 }' /etc/userdomains | sed 's/://'
o formato de / etc / userdomains é
domain.tld: user
otherdomain.tld: otheruser
awk
tem uma função sub(regexp, replacement, target)
que localiza a primeira ocorrência de regexp
em target
( $0
por padrão) e a substitui por replacement
(no local):
awk '/user/ {sub(/:/, ""); print $1}' /etc/userdomains
Você pode usar gsub
em awk
para remover todos os :
s na string.
awk '/user/ {gsub(":", ""); print $1}' /etc/userdomains
Você pode usar tr
em vez de sed:
awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"
Embora eu não veja como é melhor do que usar o awk (nem vejo o que há de errado com o sed).