두 개의 열과 n
행 수의 파일 이 있습니다.
열 1은 names
및 열 2를 포함 age
합니다.
이 파일의 내용을 age
(두 번째 열)을 기준으로 오름차순으로 정렬하고 싶습니다 .
결과는 name
가장 어린 사람 name
과 그 다음에 가장 어린 사람 등을 표시해야합니다.
하나의 라이너 쉘 또는 bash 스크립트에 대한 제안.
답변
다음 sort
명령을 사용할 수 있습니다 .
sort -k2 -n yourfile
-n
,--numeric-sort
가치있는 숫자 문자열에 따라 비교
예를 들면 다음과 같습니다.
$ cat ages.txt
Bob 12
Jane 48
Mark 3
Tashi 54
$ sort -k2 -n ages.txt
Mark 3
Bob 12
Jane 48
Tashi 54
답변
해결책:
sort -k 2 -n filename
보다 간결하게 다음과 같이 작성되었습니다.
sort --key 2 --numeric-sort filename
예:
$ cat filename
A 12
B 48
C 3
$ sort --key 2 --numeric-sort filename
C 3
A 12
B 48
설명:
-
-k # -이 인수는 정렬에 사용될 첫 번째 열을 지정합니다. (여기서 열은 공백으로 구분 된 필드로 정의됩니다. 인수
-k5
는 각 행의 다섯 번째 문자 가 아니라 각 행 의 다섯 번째 필드 부터 시작하여 정렬 됩니다) -
-n- 이 옵션은 “숫자 정렬”을 지정하여 열이 텍스트 대신 숫자 행으로 해석되어야 함을 의미합니다.
더:
다른 일반적인 옵션은 다음과 같습니다.
- -r- 이 옵션은 정렬 순서를 반대로 바꿉니다. –reverse 로 쓸 수도 있습니다 .
- -i- 이 옵션은 인쇄 할 수없는 문자를 무시합니다. –ignore-nonprinting 으로 쓸 수도 있습니다 .
- -b- 이 옵션은 선행 공백을 무시합니다. 공백은 행 수를 결정하는 데 사용되므로 편리합니다. –ignore-leading-blanks 로 쓸 수도 있습니다 .
- -f- 이 옵션은 대소 문자를 무시합니다. “A”== “a”. –ignore-case 로 쓸 수도 있습니다 .
- -t [new separator] -이 옵션은 전처리에서 공백 이외의 연산자를 사용합니다. –field-separator 로 쓸 수도 있습니다 .
다른 옵션이 있지만 가장 자주 사용되는 유용한 옵션입니다.
답변
탭으로 구분 된 값의 경우 아래 코드를 사용할 수 있습니다
sort -t$'\t' -k2 -n
-r은 내림차순으로 데이터를 가져 오는 데 사용할 수 있습니다.
숫자 정렬의 경우 -n
-k, –key = POS1 [, POS2] 여기서 k는 파일의 열입니다.
아래 내림차순은 코드입니다.
sort -t$'\t' -k2 -rn
답변
사용하십시오 sort
.
sort ... -k 2,2 ...