특정 열의 최대값을 찾아 해당 행 레코드를 인쇄하는 방법

특정 열의 최대값을 찾아 해당 행 레코드를 인쇄하는 방법

다음과 같은 레코드가 있습니다. 이제 열 4의 최대값을 찾아 해당 레코드 행을 인쇄해야 합니다.

2017122600|0|0|0|0|0|0|0|0|0|0|0|0
2017122601|0|0|0|0|0|0|0|0|0|0|0|0
2017122602|0|0|0|0|0|0|0|0|0|0|0|0
2017122603|0|0|0|0|0|0|0|0|0|0|0|0
2017122604|0|0|0|0|0|0|0|0|0|0|0|0
2017122605|0|0|0|0|0|0|0|0|0|0|0|0
2017122606|0|0|0|0|0|0|0|0|0|0|0|0
2017122607|0|0|0|0|0|0|0|0|0|0|0|0
2017122608|0|0|0|0|0|0|0|0|0|0|0|0
2017122609|0|0|1|0|0|0|0|0|0|0|0|0
2017122610|0|0|0|0|0|0|0|0|0|0|0|0

예상 출력은 다음과 같습니다.

2017122609|0|0|1|0|0|0|0|0|0|0|0|0

답변1

sort+head해결책:

sort -t'|' -k4nr file | head -1
  • -t'|'- |필드 구분자로 처리됩니다.
  • -k4nr- 4번째 필드의 번호를 기준으로 역순으로 n정렬r

산출:

2017122609|0|0|1|0|0|0|0|0|0|0|0|0

답변2

awk를 사용하면 다음과 같이 적합합니다.

awk -F'|' '$4>max{max=$4;r=$0}END{print r}' file

관련 정보