주어진 파일에서 특정 필드만 가져오는 방법은 무엇입니까?

주어진 파일에서 특정 필드만 가져오는 방법은 무엇입니까?

다음 형식의 직원 목록이 있습니다.

Name: 
Phone No:
Email: 

Name:
Address:
Phone No:
Email:

Name:
Country:
Address:
Phone No:
Email:

Name:
Address:

Name :
Email:
Address: 

내가 원하는 것은 이름과 이메일 주소를 얻는 것뿐입니다.

비슷한 것을 시도했지만 cat filename | grep -e ^Name: -e ^Email:100% 성공하지는 못했습니다.

답변1

|grep 명령에서 "or" 연산자를 정규식으로 사용합니다. 또한 필요하지 않습니다 cat. grep파일에서 직접 읽을 수 있습니다.

grep '^Name:\|^Email:' filename

답변2

"100% 성공하지 않음"이 필드 이름이 아닌 필드 값만 필요하다는 의미인 경우 awk대신 grep을 사용해야 합니다.

예를 들어

awk -F: '$1 ~ /^(Name|Email)$/ {print $2}' filename

또는 각 레코드를 빈 줄로 구분하려면 다음을 수행하세요.

awk -F: '$1 ~ /^(Name|Email)$/ {print $2}; /^[[:space:]]*$/ {print "\n"}' filename

관련 정보