sed 교체에 어떤 문제가 있나요?

sed 교체에 어떤 문제가 있나요?

정규식을 사용하여 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'

관련 정보