2011-06-23 12 views
5

3行がemacsで半前書き的に並べ替えるにはどうすればよいですか?例えば、私は、データの大規模なコレクションを持っている、の各エントリは3行がemacsで半前書き的に並べ替えるにはどうすればよいですか?

[ 5, 3, 21, 1600000 ], 
[ 3, 11, 21, 6400000 ], 
[ 3, 3, 102, 1600000 ], 

などのように見えます...

のMxソートラインは

[ 3, 11, 21, 6400000 ], 
[ 3, 3, 102, 1600000 ], 
[ 5, 3, 21, 1600000 ], 

としてこれをソートするが、私は本当にだろうこのように並べ替えて

[ 3, 3, 102, 1600000 ], 
[ 3, 11, 21, 6400000 ], 
[ 5, 3, 21, 1600000 ], 

ありがとう!

+1

厳密には辞書編集者のための辞書編集ではありません。エディタがテキストを扱い、Emacsがデフォルトで行った並べ替えは適切な辞書形式の文字列である – sehe

+0

ありがとうございました。私は質問を編集します。 – mike

+0

sort-numeric-fieldsを試しましたか? – borrible

答えて

2

私は、Emacsを使用しませんが、vimの中で私がやるだろう:

%!sort -k2n -k3n 

Iを(おそらく、私はサンプルを形成言うことができないだけでなく、他のキー列を使用して)

ここではエディタの戦争を始めていません...私はemacsがあなたにシェルコマンドをフィルタリングすることを許可していると確信しているので、これは助けになります!

3

sehe gives a good solution。ここでは、Emacsである:あなたの地域で選択し、それがsort出力に含まに置き換えられます

C-u M-| sort -k2n -k3n 

ラン!あなたのデータと

2

それは少し面倒ですが、以下は、あなたがやりたいだろうが。

C-u 3 M-x sort-numeric-fields 
C-u 2 M-x sort-numeric-fields 

私はsort-numeric-fieldsstable sortあるので、それは常に動作しない場合がありますことを確かに知りません。そして明らかに上記は2つの数字だけを「深く」分類し、C-u 4 M-xソート...を追加する必要があります。最初のフィールドがであり、カウントが1から始まるため、接頭辞の引数は2から始まります。

sort-subrを適切な字句解析述語で呼び出すことで自分自身をロールバックすることもできます。詳細はdocumentation for sort-subrを参照してください。

関連する問題