![주어진 파일에서 특정 필드만 가져오는 방법은 무엇입니까?](https://linux55.com/image/86051/%EC%A3%BC%EC%96%B4%EC%A7%84%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%ED%8A%B9%EC%A0%95%20%ED%95%84%EB%93%9C%EB%A7%8C%20%EA%B0%80%EC%A0%B8%EC%98%A4%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음 형식의 직원 목록이 있습니다.
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