입력할 다음 줄이 있다고 가정해 보겠습니다 awk
.
dolly-cabinet-93-red
murfy-swan-96-white
chizzle-rock-115-green
-
세 번째 열에서 가장 큰(숫자) 행을 선택 하고 해당 행을 출력하는 방법(바람직하게는 를 사용 awk
하지만 이에 국한되지 않음)은 무엇입니까?
왠지 96 솔루션이 가장 큰 것 같아요.
답변1
나는 당신이 어떤 종류의 정렬을 하고 있다고 추측하고 있으며 이 정렬은 숫자 순서가 아닌 사전식 순서로 수행됩니다. 이 경우 (after 때문에 ) 96
이후에 정렬됩니다 .115
9
1
awk -F '-' '$3 > max { max = $3; line = $0 } END { print line }' file
주어진 데이터에 대해 다음이 출력됩니다.
chizzle-rock-115-green
코드는 구분된 세 번째 -
필드를 현재 발견된 가장 큰 숫자( )와 max
비교합니다 . 필드의 숫자가 더 높으면 max
해당 숫자로 업데이트되고 현재 입력 줄이 에 저장 됩니다 line
.line
이는 선형 작업이므로 정렬보다 약간 빠르지만(정렬은 기껏해야 O(n*log(n))
) 데이터가 많지 않으면 큰 차이를 느끼지 못할 것입니다.
답변2
sort
+ 사용의 대안 head
:
sort -t'-' -k3nr file | head -1
산출:
chizzle-rock-115-green