정규식을 사용하여 perforce users 명령에서 사용자 이메일을 추출하려고 합니다. 그러나 어떤 이유로 나는이 문제에 직면했습니다. 누군가 내가 뭘 잘못하고 있는지 말해 줄 수 있나요?
p4 user -o $user | grep 'Email:' | awk '/Email:/{i++}i==2' | sed -e 's/Email: //g'
나는 이것을 얻습니다 :
Email: perforce@master
하지만 목적은 뒤에 오는 것을 얻는 것입니다Email:
답변1
awk를 사용할 때 grep이나 sed가 필요하지 않습니다. 출력을 표시하지 않았 p4 user -o $user
으므로 awk에 대한 입력이 무엇인지 추측할 수 있지만 아마도 이것이 필요한 것입니다.
p4 user -o "$user" | awk '($1=="Email:") && c++{print $2; exit}'
그러나 출력 내용에 따라 더 간단한 솔루션이 있을 수 있습니다 p4 ...
.
답변2
정확한 수의 공백을 일치시키려고 합니다. 이것이 문제일 수 있습니다. 예를 들어, 탭 문자가 있으면 sed 표현식도 실패합니다. 일반적인 경우와 공백을 일치시키십시오. 예를 들면 다음과 같습니다.
sed -e 's/Email:[[:blank:]]*//g'