awk '/user/ {print $1 }' /etc/userdomains | sed 's/://'
/ etc/userdomainsの形式は
domain.tld: user
otherdomain.tld: otheruser
最も簡単な方法は、フィールド区切り文字を「:」に設定することです。
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
gsub
のawk
を使用して、文字列内のすべての:
を削除できます。
awk '/user/ {gsub(":", ""); print $1}' /etc/userdomains
awk
にはsub(regexp, replacement, target)
関数があり、regexp
(デフォルトでは$0
)でtarget
の最初の出現を検出し、それをreplacement
(インプレース)に置き換えます。
awk '/user/ {sub(/:/, ""); print $1}' /etc/userdomains
Sedの代わりにtr
を使用できます。
awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"
Awkを使用するよりもそれがどのように優れているかはわかりませんが(sedの何が問題になっているのかもわかりません)。