整数を括弧で囲んでスペースなしでファイルをソートする


8

私はこのようにファイルをソートしようとしています(これはサブルーチン名のリストです)

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-> ...)いくつかのコマンドまたはオプションを使用するだけで、これを比較的簡単に行うことはできますか?


...どんな関係
mikeserv 2015

@mikeserv私のお気に入りのchar-> ヒマワリを歌う ->太陽->スペクトル:)
roygvib

回答:


8

どうですか:

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キーをsort2番目のフィールドとして設定します。つまり、数字から始まり行の終わりまでです。


oooooh attaching -n works ... manページを読んで-nを試してみましたが、その時は機能しませんでしたが、上記の組み合わせは完全に機能します。:)
roygvib 2015

@roygvib私が使用することを示唆している(区切り文字として代わりに=使用するかのように(...そして、ソートが第2フィールドの非常に開始点から数値的に開始することができます
heemayl

はい、「(」よりも「=」を使用した方がよいはずです。「(」と「)」の両方を区切り文字として同時に使用しようとしたが、成功しなかったため、括弧を使用することをあきらめました...
roygvib

5

これを試して。区切り文字を=に設定し、文字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

1
うーん..これも期待どおりに動作します。一部の文字はスキップできることを知っておくと便利です。
どうも
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.