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
有一个sub(regexp, replacement, target)
函数可以查找第一次出现的regexp
in target
($0
默认情况下) 并将其替换为replacement
(in-place):
awk '/user/ {sub(/:/, ""); print $1}' /etc/userdomains
答案3
您可以使用gsub
inawk
删除:
字符串中的所有 s。
awk '/user/ {gsub(":", ""); print $1}' /etc/userdomains
答案4
您可以使用tr
代替 sed:
awk '/user/ {print $1 }' /etc/userdomains | tr -d ":"
虽然我不认为这比仅仅使用 awk 有什么好处(我也不认为 sed 有什么问题)。