awk '/user/ {print $1 }' /etc/userdomains | sed 's/://'
/etc/userdomains の形式は次のとおりです。
domain.tld: user
otherdomain.tld: otheruser
答え1
最も簡単な方法は、フィールド区切り文字を「:」に設定することです。
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
答え2
awk
in(デフォルトでは)sub(regexp, replacement, target)
が最初に現れるものを見つけて(in-place)に置き換える関数があります。regexp
target
$0
replacement
awk '/user/ {sub(/:/, ""); print $1}' /etc/userdomains
答え3
gsub
inを使用して、文字列内のすべてのsをawk
削除できます。:
awk '/user/ {gsub(":", ""); print $1}' /etc/userdomains
答え4
代わりにsedを使用できますtr
。
awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"
これは単にawkを使用するよりも何の利点もないと思いますが(Sedにも問題がないと思います)。