gnu 정렬에서 --general-numeric-sort와 --numeric-sort 옵션의 차이점은 무엇입니까?
sort두 종류의 숫자 정렬을 제공합니다. 이것은 man 페이지에서 가져온 것입니다.
-g, --general-numeric-sort
compare according to general numerical value
-n, --numeric-sort
compare according to string numerical value
차이점이 뭐야?
일반 숫자 정렬은 숫자를 부동 소수점으로 비교합니다. 이것은 과학적 표기법 (예 : 1.234E10)을 허용하지만 더 느리고 반올림 오류 (1.2345678은 1.2345679 이후에 올 수 있음)가 발생합니다. 숫자 정렬은 10이 9 다음에 오는 것을 알고있는 일반적인 알파벳 정렬입니다.
참조 http://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html를
'-g' '--general-numeric-sort' '--sort = general-numeric'표준 C 함수 strtod를 사용하여 각 줄의 접두사를 배정 밀도 부동 소수점 숫자로 변환하여 숫자로 정렬합니다. 이를 통해 1.0e-34 및 10e100과 같은 과학적 표기법으로 부동 소수점 숫자를 지정할 수 있습니다. LC_NUMERIC 로케일은 소수점 문자를 결정합니다. 오버플로, 언더 플로 또는 변환 오류를보고하지 마십시오. 다음 조합 순서를 사용하십시오. 숫자로 시작하지 않는 행 (모두 동일한 것으로 간주 됨). NaN (IEEE 부동 소수점 산술에서 "숫자가 아님"값)은 일관되지만 기계에 따라 다릅니다. 마이너스 무한대. 오름차순의 유한 숫자 (-0과 +0이 같음). 플러스 무한대.
대안이없는 경우에만이 옵션을 사용하십시오. --numeric-sort (-n)보다 훨씬 느리고 부동 소수점으로 변환 할 때 정보를 잃을 수 있습니다.
'-n' '--numeric-sort' '--sort = numeric'숫자로 정렬합니다. 숫자는 각 행을 시작하며 선택적 공백, 선택적 '-'기호 및 천 단위 구분 기호로 구분 될 수있는 0 개 이상의 숫자, 선택적으로 소수점 문자 및 0 개 이상의 숫자로 구성됩니다. 빈 숫자는 '0'으로 처리됩니다. LC_NUMERIC 로케일은 소수점 문자와 천 단위 구분 기호를 지정합니다. 기본적으로 공백은 공백 또는 탭이지만 LC_CTYPE 로케일이이를 변경할 수 있습니다.
비교는 정확합니다. 반올림 오류가 없습니다.
선행 '+'또는 지수 표기는 인식되지 않습니다. 이러한 문자열을 숫자로 비교하려면 --general-numeric-sort (-g) 옵션을 사용하십시오.
로케일에주의해야합니다. 예를 들어, 부동 숫자 (예 : 2.2)를 정렬하려는 반면 로케일은 쉼표 (예 : 2,2) 사용을 예상 할 수 있습니다.
이 포럼에 보고 된대로 -n 또는 -g 플래그를 사용하면 잘못된 결과를 얻을 수 있습니다.
제 경우에는 다음을 사용합니다.
LC_ALL=C sort -k 6,6n file
다음을 포함하는 6 번째 열을 정렬하려면
2.5
3.7
1.4
얻기 위해
1.4
2.5
3.7
'IT박스' 카테고리의 다른 글
| 파일 열기, 분기 등을 방지하는 Linux의 샌드 박스에서 신뢰할 수없는 C 프로그램을 실행 하시겠습니까? (0) | 2020.08.08 |
|---|---|
| Kubernetes 용 로컬 개발 환경을 만드는 방법은 무엇입니까? (0) | 2020.08.08 |
| View Controller Containment는 iOS 5에서 어떻게 작동합니까? (0) | 2020.08.08 |
| Web.Debug.config 및 Web.Release.Config 파일의 용도는 무엇입니까? (0) | 2020.08.08 |
| TypeScript 파일에 "Use Strict"가 필요합니까? (0) | 2020.08.08 |