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에도 문제가 없다고 생각합니다).