grep 정확한 텍스트 출력만 가능합니까?

grep 정확한 텍스트 출력만 가능합니까?

다음과 같은 텍스트 줄이 있다고 가정해 보겠습니다.

#cat numbers.txt
Numbers!!!! John=55 May=43 RandomData Alex=72 Ben=90 End

하지만 나는 John의 전화번호에만 관심이 있어요. 원하지 않는 다른 항목을 모두 제거하고 출력을 다음과 같이 바꾸려면 어떻게 해야 합니까?

#cat numbers.txt | <some command line magic>
John=55

참고: 텍스트 파일에서 "John"이 어디에 있는지, John에게 어떤 번호가 할당되어 있는지 모릅니다.

답변1

나는 그것을 할 것이다:

awk '{ print $2 }' numbers 
John=55

단, 원하는 정보는 항상 두 번째 필드에 있습니다.

편집하다:~에 따르면당신의편집하세요. 파일에서 John이 어디에 있는지 모르기 때문에 다음과 같이 하겠습니다.

egrep -o 'John=[0-9]{2}' numbers 
John=55

답변2

John=과 다음 공백 구분 기호 사이에 무엇이 있는지 원하는 경우(숫자 개수에는 제한이 없으며 미리 알 필요가 없습니다)

grep -Po 'John=\K.*?(?= )' numbers

관련 정보