2016-06-28 4 views
2

emacs 24.5を使用していて、次のようなファイルをソートしようとしています。 一見したところではソートされた順であるように見えますが、数値的には「左から右」の意味でその注文はs-199であり、次にs2です。Emacs sort-regex-fields

file '602036248001_4483709143001_s-1.ts' 
file '602036248001_4483709143001_s-10.ts' 
file '602036248001_4483709143001_s-100.ts' 
file '602036248001_4483709143001_s-101.ts' 
file '602036248001_4483709143001_s-102.ts' 
file '602036248001_4483709143001_s-103.ts' 
file '602036248001_4483709143001_s-104.ts' 
file '602036248001_4483709143001_s-105.ts' 
file '602036248001_4483709143001_s-106.ts' 
file '602036248001_4483709143001_s-107.ts' 
file '602036248001_4483709143001_s-108.ts' 

私はfile '602036248001_4483709143001_s-[^a-zA-Z]*.ts'などと「キー」正規表現で[^a-zA-Z' _-]\{1,3\}.ts

として「記録」正規表現で、emacsの中sort-regexp-fieldsを使用しようとしました。しかし、これらは仕方によって、その(regexp-builderで試合をハイライト表示するように見えますなぜあなたは正規表現を引用符で囲む必要がありますか? ")...

これはうまくいかず、私は困惑します。また、sort-columnsを使って領域とソートをマークしようとしましたが、どちらもうまくいきませんでした。

+0

それだけでソート辞書的にすることができますので、 'ソート正規表現-fields'をではなく、数値的、機能しません。しかし、 'sort-numeric-fields'は、フィールドが空白で区切られていると仮定しているため動作しません。そして 'sort-columns'も動作しません。すべてのフィールドの長さが同じであるとみなし、辞書的にソートします。 –

+1

あなたは 'sort-numeric-fields'を見たいかもしれません –

答えて

2

Emacsではなくawkを使用します。 sort.awkがどこにある

awk -f sort.awk your-file.txt 

のようなものを試してみてください:

BEGIN { 
    FS = "[-.]" 
} 
{ 
    key[NR] = $2+0 
    line[$2+0] = $0 
} 
END { 
    asort(key) 
    for (i = 1; i <= NR; i++) { 
     print line[key[i]] 
    } 
}