5

数千のエントリがあるリストをいくつか並べ替えて比較する必要があります。リストは次のようになります。

11-2-3049_2007_squib.pdf
11-11-5476_2004_squib.pdf
13-2-5477_2006_squib.pdf
14-3-3045A_2004_squib.pdf
14-CMF-3046_2004_squib.pdf
14-2-3047_2005_squib.pdf
14-4-3048_2004_squib.pdf
15-7-3050P_2004_squib.pdf

最初の例のように、2番目-とその前の間の数字で並べ替えようとしています。_3049

列による並べ替えと正規表現を組み合わせて成功させることはできませんでした。皆さんは何を提案しますか?

4

2 に答える 2

8

これでうまくいくはずです:

:sort r  /\v^(.{-}-){2}\zs.{-}\ze_/

見る

:help sort

ここの背景について

正規表現には、いくつかの紆余曲折が含まれています。

  • \v非常に魔法のモードに従事する(逃げる必要性を減らす)
  • \zsそして\ze、実際の試合結果の開始と終了をマークします
  • {-}欲張りでないクリーネ閉包の一致を実行するには(Perl表記で.{-}.*?
于 2012-10-05T19:06:10.760 に答える
4

外部sortプログラムを使用します。

:%!sort -n -t- -k3,3
于 2012-10-05T19:10:49.287 に答える