읽기 가능한 파일의 일부를 선택하려면 cut 또는 awk를 사용하십시오.

읽기 가능한 파일의 일부를 선택하려면 cut 또는 awk를 사용하십시오.

저는 사람의 이름과 전화번호, 주소 등 기타 많은 정보가 포함된 파일을 만들었습니다. 해당 목록에 있는 모든 사람의 이름만 선택할 수 있는 방법이 궁금합니다.

이 목록에는 한 사람이 여러 이름을 가질 수 있는 열이 없습니다(이름과 성뿐만 아니라 중간 이름도 의미함). 각 줄의 형식은 다음과 같습니다.

student number,,,Name_of_student,,,address

예를 들어:

a684932,,,John Liam Anderson,,,Kentucky
a683910,,,Mary Reynold,,,Michigan
...
...

출력은 다음과 같아야 합니다.

John Liam Anderson 
Mary Reynold 

답변1

귀하의 데이터는 쉼표로 구분된 값(CSV) 형식인 것 같습니다.

CSV 파일이 "단순"인 경우, 즉 쉼표로 구분된 필드에 쉼표가 있는 문자열이 포함되어 있지 않고 이름이 항상 필드 4에 있는 경우(예제 입력에서와 같이) 다음을 필드 구분 기호로 awk사용하세요 ,. 스크립트:

awk -F',' '{print $4}' file.txt

필드 값에 다음이 포함될 수 있는 경우 ,(예: 이름이 it 인 경우 ) John Liam Anderson, jr.이 순진한 접근 방식은 더 이상 작동하지 않습니다 . CSV 형식을 정의하는 "권한 있는" 표준이 없기 때문에(오픈 소스 소프트웨어는 이를 따를 가능성이 높지만)RFC4180), 따라서 이러한 문자열의 처리는 "필드 값 쉼표"를 이스케이프 처리하는 방법에 따라 달라집니다.

관련 정보