파일에서 특정 요소를 추출하는 방법

파일에서 특정 요소를 추출하는 방법

다음 스냅샷이 포함된 파일이 있습니다.

Name    age  class
John    12   3
Mark    10   1
Philip  15   6

열 사이의 구분 기호는 여러 개의 공백입니다.

클래스 카테고리에서 가장 높은 숫자를 인쇄하고 싶습니다.

원하는 결과를 얻는 방법을 알려주십시오.

답변1

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF } END { print max }' file

그러면 파일을 읽고 첫 번째 행(헤더 행)을 제외한 모든 행의 마지막 필드에 이전에 본 값보다 큰 숫자 값이 있을 때마다 해당 값이 변수에 기억됩니다 max. 이전에 기억된 값이 없으면 이 값도 기억됩니다.

마지막으로 max변수 값이 인쇄됩니다. 이는 모든 행(첫 번째 행 제외)의 마지막 필드에 표시되는 최대값입니다.

이는 class열이 항상 각 행의 끝에 있다고 가정합니다.

특수 변수 NFNR는 각각 현재 레코드의 필드 수와 지금까지 읽은 레코드 수입니다. 값은 $NF현재 레코드의 마지막 필드 값입니다.

마지막 열에서 가장 큰 숫자가 있는 전체 행을 얻으려면 위 코드를 약간 수정하여 관련 데이터를 기억하고 인쇄하면 됩니다.

awk 'NR > 1 && (max == "" || $NF > max) { max = $NF; line = $0 } END { print line }' file

답변2

sort이 기능은 주요 위치를 정의하여 달성됩니다. 다음을 시도해 볼 수 있습니다.

sort --key=3 file

관련 정보