programing

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

elseif 2023. 4. 24. 22:35

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

2열로 된 파일을 가지고 있고n행의 수

column1에는 다음이 포함됩니다.names및 열 2age.

이 파일의 내용을 오름차순으로 정렬합니다.age(두 번째 열에 있습니다).

결과는 다음과 같습니다.name와 함께 가장 젊은 사람의name그리고 둘째 막내...

1개의 라이너 셸 또는 bash 스크립트에 대한 권장 사항.

를 사용할 수 있습니다.key명령어 옵션(필드 번호)을 지정하므로 두 번째 열을 원하는 경우 다음을 수행합니다.

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각 행의 5번째 문자가 아닌 5번째 필드부터 정렬됩니다.)

  • -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 ...

간단하게

$ sort -k2,2n <<<"$data"

언급URL : https://stackoverflow.com/questions/6438896/sorting-data-based-on-second-column-of-a-file