次のようなテーブルがあります。
姓名;長さ;体重;
長さで並べ替える必要があり、長さが 1 つ以上の名前で等しい場合は、それらを重量で並べ替える必要があります。sort ni
長さだけで並べ替え、私もそれを試しsort /.\{-}\ze\dd/
ましたが、どちらもうまくいきませんでした。
どんな助けでも大歓迎です!
これは、外部 (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
r
フラグで試してみてください。
長さで並べ替え:
:%sort rni /.*;\ze\d/
重量でソート:
:%sort rni /\d+\ze;$/
このフラグがないと、並べ替えは一致の後に来るものに対して実行されるため、少し面倒になる可能性があります。
フラグを使用r
すると、一致自体でソートが行われるため、定義が容易になる場合があります。ここで、パターンは、行末のセミコロンの直前の一連の 1 つ以上の数字に一致します。