私はこのようなファイルをソートしようとしています(サブルーチン名のリスト)。
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 で始まるフィールド 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