[bash] 파일의 두 번째 열을 기준으로 데이터 정렬

두 개의 열과 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 ...


답변