파일에서 가장 짧은 숫자를 찾는 방법

파일에서 가장 짧은 숫자를 찾는 방법

파일에서 가장 짧은 숫자를 찾으려고 하는데 어떻게 해야 할지 모르겠습니다. 이것은 내 입력 파일입니다.

asd
qwmcqm
342
xsa
53425423432
54334
aseqwe
// so i want to print "342"

AWK 스크립트여야 하므로 쉘에서 "정렬"을 사용할 수 없습니다. 다음을 시도했습니다.

while(( getline line < "FileInput" ) > 0 ){
if ( line ~ /[0-9]/ )
if (length(line) < L)
    L = length(line)
}

하지만 작동하지 않습니다! 스크립트 내부의 "<"를 ">"로 변경하면 최대 수에 대해서만 작동합니다.

답변1

귀하의 예제가 가장 작은 숫자 대신 가장 큰 숫자를 찾는 데 작동하는 이유는 awk명시적으로 설정되지 않은 변수의 기본값이 0이기 때문입니다. 일치하는 행 중 어느 것도 0보다 작지 않습니다.

이전에 찾은 숫자와 비교하고 싶기 때문에 조건의 L이 0인지 확인하여 찾은 첫 번째 숫자가 동일한지 확인할 수 있습니다. (이는 첫 번째 숫자인 경우에만 발생합니다.) 길이는 다음으로 설정됩니다. L(파일에 표시됨).

if (length(line) < L || L == 0) {
   L = length(line)
}

관련 정보