7

次のようなテーブルがあります。

姓名;長さ;体重;

長さで並べ替える必要があり、長さが 1 つ以上の名前で等しい場合は、それらを重量で並べ替える必要があります。sort ni長さだけで並べ替え、私もそれを試しsort /.\{-}\ze\dd/ましたが、どちらもうまくいきませんでした。

どんな助けでも大歓迎です!

4

2 に答える 2

7

これは、外部 (GNU) ソートを使用して非常に簡単に実行できます。

!sort -t ';' -k 2,2n -k 3,3n

これは、フィールドをセミコロンで分割し、2 番目のフィールドで数値的に並べ替え、次に 3 番目のフィールドで数値的に並べ替えることを意味します。おそらく、作成できる vim-internal コマンドよりもはるかに読みやすく、覚えやすいでしょう。

GNU ソートに関する詳細情報: http://www.gnu.org/software/coreutils/manual/html_node/sort-invocation.html

于 2012-10-30T23:04:47.533 に答える
1

rフラグで試してみてください。

長さで並べ替え:

:%sort rni /.*;\ze\d/

重量でソート:

:%sort rni /\d+\ze;$/

このフラグがないと、並べ替えは一致のに来るものに対して実行されるため、少し面倒になる可能性があります。

フラグを使用rすると、一致自体でソートが行われるため、定義が容易になる場合があります。ここで、パターンは、行末のセミコロンの直前の一連の 1 つ以上の数字に一致します。

于 2012-10-30T22:23:26.797 に答える