괄호 안의 정수로 파일 정렬(공백 없이)

괄호 안의 정수로 파일 정렬(공백 없이)

나는 이와 같은 파일을 정렬하려고 합니다(서브루틴 이름 목록).

cfn=(1370) __lib_file_MOD_file_open
fn=(1368) __universe_MOD_general_boot
fn=(916) __universe_MOD_general_main
fn=(6142) __grid_var_MOD_get_overlap
...

괄호 안의 정수를 기준으로 합니다. 처음으로 sort 명령을 시도했습니다.

sort -t '=' -k 2 routine_list.txt

그러나 fn=(916)은 출력 끝에 나타납니다.

fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap
...
fn=(916) __universe_MOD_general_main

그런데 숫자를 오름차순으로 정렬하고 싶습니다(916 -> 1368 -> 1370 -> ...) 여러 명령이나 옵션을 사용하여 비교적 간단하게 이 작업을 수행할 수 있습니까?

답변1

어때요?

sort -nt'(' -k2 file.txt

시험:

$ sort -nt'(' -k2 file.txt 
fn=(916) __universe_MOD_general_main
fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap
  • -n숫자로 정렬한다는 의미입니다.

  • t'('구분 기호를 다음으로 설정하세요.(

  • -k2sort숫자로 시작하여 줄의 끝으로 이동하는 두 번째 필드 에 키를 설정합니다 .

답변2

이 시도. 구분 기호를 =로 설정한 다음 문자 2에서 시작하는 필드 2를 사용합니다("(") 무시).

sort -t= -k 2.2n file.txt
fn=(916) __universe_MOD_general_main
fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap

심지어

sort -t\( -k 2n <foo
fn=(916) __universe_MOD_general_main
fn=(1368) __universe_MOD_general_boot
cfn=(1370) __lib_file_MOD_file_open
fn=(6142) __grid_var_MOD_get_overlap

관련 정보