나는 이와 같은 파일을 정렬하려고 합니다(서브루틴 이름 목록).
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'('
구분 기호를 다음으로 설정하세요.(
-k2
sort
숫자로 시작하여 줄의 끝으로 이동하는 두 번째 필드 에 키를 설정합니다 .
답변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