예 file.txt
:
100 foo
2 bar
300 tuu
를 사용하면 sort -k 1,1 file.txt
다음과 같이 예상되지만 행 순서는 변경되지 않습니다.
2 bar
100 foo
300 tuu
절대 숫자 값을 기준으로 숫자로 구성된 필드를 정렬하는 방법은 무엇입니까?
답변
정렬을 위해 man 페이지를 들여다보십시오 …
-n, --numeric-sort compare according to string numerical value
여기에 예가 있습니다 …
sort -n filename
답변
예를 들어 롤링 로그의 파일 이름과 같이 텍스트와 숫자가 혼합 된 문자열을 정렬하는 경우 정렬이 sort -n
예상대로 작동하지 않습니다.
$ ls |sort -n
output.log.1
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.2
output.log.20
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
이 경우 옵션 -V
이 트릭을 수행합니다.
$ ls |sort -V
output.log.1
output.log.2
output.log.3
output.log.4
output.log.5
output.log.6
output.log.7
output.log.8
output.log.9
output.log.10
output.log.11
output.log.12
output.log.13
output.log.14
output.log.15
output.log.16
output.log.17
output.log.18
output.log.19
output.log.20
맨 페이지에서 :
-V, --version-sort natural sort of (version) numbers within text
답변
여기에있는 대부분의 다른 답변은
sort -n
그러나 이것이 음수에 대해 작동하는지 확실하지 않습니다. 다음은 Fedora 9에서 정렬 버전 6.10으로 얻은 결과입니다.
입력 파일:
-0.907928466796875
-0.61614990234375
1.135406494140625
0.48614501953125
-0.4140167236328125
산출:
-0.4140167236328125
0.48614501953125
-0.61614990234375
-0.907928466796875
1.135406494140625
분명히 숫자 값으로 정렬되지 않았습니다.
그렇다면 더 정확한 대답은 sort -n
모든 값이 양수인 경우에만 사용하는 것이라고 생각합니다 .
추신 :을 사용하면 sort -g
이 예에서 동일한 결과가 반환됩니다 .
편집하다:
로케일 설정이 빼기 기호가 순서에 영향을 미치는 방식에 영향을 미치는 것 같습니다 ( 여기 참조 ). 적절한 결과를 얻기 위해 방금했습니다.
LC_ALL=C sort -n filename.txt
답변
숫자 정렬 옵션을 사용해야합니다.
sort -n -k 1,1 File.txt
답변
사용 sort -n
또는 sort --numeric-sort
.
답변
다음 명령을 수행해야합니다.
sort -n -k1 filename
그것은 그것을해야합니다 🙂