부동 소수점으로 행을 정렬하는 방법

부동 소수점으로 행을 정렬하는 방법

다음과 같은 파일이 있습니다.

name: xxx --- time: 5.4 seconds
name: yyy --- time: 3.2 seconds
name: zzz --- time: 6.4 seconds
...

이제 이 파일을 이러한 부동 소수점 기준으로 정렬하여 다음과 같은 새 파일을 생성하고 싶습니다.

name: yyy --- time: 3.2 seconds
name: xxx --- time: 5.4 seconds
name: zzz --- time: 6.4 seconds
...

명령을 시도했지만 awk '{print $5}' myfile | sort -g부동 소수점 숫자만 표시됩니다.

답변1

GNU 또는 호환 버전을 사용하는 경우 일반 숫자 정렬에 해당 스위치를 sort사용할 수 있습니다 .-g

$ sort -g -k5,5 file
name: yyy --- time: 3.2 seconds
name: xxx --- time: 5.4 seconds
name: zzz --- time: 6.4 seconds

-k5,5다섯 번째 열에서만 정렬을 수행하도록 sort에 지시합니다 .

용법

info sort이 페이지의 세부정보를 기억하세요 .

'-g'
'--general-numeric-sort'
'--sort=general-numeric'
     Sort numerically, converting a prefix of each line to a long
     double-precision floating point number.  *Note Floating point::.
     Do not report overflow, underflow, or conversion errors.  Use the
     following collating sequence:

        * Lines that do not start with numbers (all considered to be
          equal).
        * NaNs ("Not a Number" values, in IEEE floating point
          arithmetic) in a consistent but machine-dependent order.
        * Minus infinity.
        * Finite numbers in ascending numeric order (with -0 and +0
          equal).
        * Plus infinity.

     Use this option only if there is no alternative; it is much slower
     than '--numeric-sort' ('-n') and it can lose information when
     converting to floating point.

관련 정보