Сортировка файла с целым числом в круглых скобках без пробела

Я пытаюсь сортировать файл, подобный этому (который является списком имен подпрограмм)

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 -> …) Можно ли сделать это относительно просто, используя несколько команд или опций?

Как насчет:

 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 вперед (игнорируя значение «(»).

 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