다음 형식의 직원 목록이 있습니다.
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