awk '/user/ {print $1 }' /etc/userdomains | sed 's/://'
le format de / etc / userdomains est
domain.tld: user otherdomain.tld: otheruser
La méthode la plus simple consiste à définir le séparateur de champs sur ":"
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
a une fonction sub(regexp, replacement, target)
qui trouve la première occurrence de regexp
dans la target
( $0
par défaut) et la remplace par replacement
(in-place):
awk '/user/ {sub(/:/, ""); print $1}' /etc/userdomains
Vous pouvez utiliser gsub
dans awk
pour supprimer tout :
s dans la string.
awk '/user/ {gsub(":", ""); print $1}' /etc/userdomains
Vous pourriez utiliser tr
au lieu de sed:
awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"
Bien que je ne vois pas comment c'est mieux que juste d'utiliser awk (ni je vois ce qui ne va pas avec sed).