두 개의 숫자 필드를 정렬하는 방법

두 개의 숫자 필드를 정렬하는 방법

다음과 같은 파일 이름 목록이 있습니다.

epdb_0_0.pdb
epdb_0_10.pdb
epdb_0_11.pdb
epdb_0_12.pdb
epdb_0_13.pdb
epdb_0_14.pdb
epdb_0_15.pdb
epdb_0_16.pdb
epdb_0_17.pdb
epdb_0_18.pdb
epdb_0_19.pdb
epdb_0_1.pdb
epdb_0_20.pdb
epdb_0_21.pdb
epdb_0_22.pdb
epdb_0_23.pdb
epdb_0_24.pdb
epdb_0_25.pdb
epdb_0_26.pdb
epdb_0_27.pdb
epdb_0_28.pdb
epdb_0_29.pdb
epdb_0_2.pdb
epdb_0_30.pdb
...

Unix sort 명령을 사용하여 목록을 다음과 같이 만드는 방법:

epdb_0_0.pdb
epdb_0_1.pdb
epdb_0_2.pdb
...
epdb_0_10.pdb
epdb_0_11.pdb
epdb_0_12.pdb
epdb_0_13.pdb
epdb_0_14.pdb
epdb_0_15.pdb
epdb_0_16.pdb
epdb_0_17.pdb
...
epdb_1_0.pdb
epdb_1_2.pdb
epdb_1_3.pdb
...

나는 이것을 --key= flag조합하여 사용하는 것을 알고 있지만 iwht -n or -g작동시킬 수는 없습니다.

답변1

특정 방식으로 파일 이름 목록을 정렬하는 대신 다음 명령을 사용할 수 있습니다.

ls -1v *.pdb

원하는 순서대로 파일을 나열하는 것부터 시작하세요.

답변2

다음을 수행할 수 있습니다.

$ cat file.txt | sort -t"_" | sort -n -k3 -t"_"
  • file.txt에는 정렬되지 않은 첫 번째 목록이 포함되어 있습니다.

건배.

답변3

노력하다:

sort -t "_" -k2 -k3 -g <filename>

-t "_"- 필드 구분 기호는 다음과 같습니다._

-k2- 두 번째 열의 첫 번째 종류

-k3- 그런 다음 세 번째 열을 정렬합니다.

-g- 일반 수치 정렬

답변4

sort -V

-V, --version 정렬 텍스트에서 (버전) 번호의 자연스러운 순서

관련 정보