숫자 정렬로 유닉스에서 정렬 명령


10

file1이 있습니다.

"$lvl=57"
"$lvl=20"
"$lvl=48"
"$lvl=17"
"$lvl=58"

File2 내가 원하는 :

"$lvl=17"
"$lvl=20"
"$lvl=48"
"$lvl=57"
"$lvl=58"

기본적으로 숫자 형식의 파일 1.


sort옵션없이 File1에서 일반 Unix 를 실행하면 File2를 얻습니다. 당신은 다르게 무엇을하고 있습니까? 이 질문에서 무엇을 남기고 있습니까?
Scott

답변:


17

나는 -V --version-sort를 좋아한다 : 그것은 문자열과 숫자를 혼합하는 많은 상황에서 매우 잘 작동한다

sort -V

나는이 옵션을 매우 자주 사용합니다 ...

ls -vversion-sort 의 일부 방향 ls입니다.


10

다음 sort -n에 나오는 부분을 정렬 하도록 지시해야 합니다 =.

sort -t = -k 2n

나는 최근에 이것을보고 있었다 ^^. 그러나 하나 더 Q. 무엇을합니까 -k2n? 숫자 정렬과 관련이 있습니까? 감사합니다.
αғsнιη

2
@KasiyA -k는 정렬 키를 정의합니다. 자세한 내용은 매뉴얼 페이지를 참조하십시오. -k2n두 번째 필드에서 시작하여 줄의 끝에서 끝나는 정렬 키를 정의하고 숫자 정렬 키로 만듭니다.
Stéphane Chazelas

0

정렬 사용 :

sort -n file1 > file2

-n,-
숫자 -정렬 문자열 숫자 값에 따라 비교

 sort -g file1 > file 2

-g,-일반-숫자 정렬


3
아니요, 모든 줄은 sort -n숫자로 시작하지 않기 때문에 순위가 같습니다 . 정렬하는 이유는 동일한 순위를 가진 행에 대해 수행 된 마지막 리조트 전체 행 정렬 (수적으로는 숫자가 아님)입니다. 그 "$lvl=17"전에 정렬 "$lvl=2"됩니다.
Stéphane Chazelas

@ StéphaneChazelas 지적 해 주셔서 감사합니다.
Hackaholic

의역에, -n그리고 -g입력이 수치 아니므로 여기에 중복입니다. 따라서이 답변은 오도의 소지가 있으므로 downvote입니다 (또한 -g긴 옵션은 GNU에만 해당됩니다).
Stéphane Chazelas

그러나 -g는 좋은 일반적인 숫자 정렬입니다
Hackaholic

그것은 여전히 ​​숫자 값을 정렬하기위한 것입니다. 차이점 -n은 10 진수로 제한되지 않는다는 것입니다. 즉 여전히 일종의 것 "$lvl=17"전에 "$lvl=2"마지막으로 리조트의 일환으로 정렬.
Stéphane Chazelas

0

나는 당신이 방금 실행 sort -h하면 작동 한다는 것을 알았 습니다. 그들은 그것을 부릅니다 --human-numberic-sort.

sort -h file1 > file2

-1

sort -n당신이 사용하고 싶은 것입니다. 숫자를 정렬 할 때 정렬됩니다.sort -k 2 -n file1


2
그러나 OP는 기본값 인 오름차순으로 정렬하려고합니다. 역순을 제안하는 이유는 무엇입니까?
G-Man, 'Reinstate

필드가 이나 공백으로 분리되어 있고 OP의 경우에는 작동하지 않을 때 위의 내용이 정확합니다 .
αғsнιη
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.