2

次のような複数のタブ区切りの列を含むテキスト ファイルがあるとします。

1  foo  bar
3  bar  foo

2 番目または 3 番目の列に基づいて並べ替えるにはどうすればよいですか?

:'<,'>!sort -n -k 2ビジュアル モードでの使用や のようなものを読みまし:sort /.*\%2v/たが、これらのコマンドはどれも機能していないようです。

4

3 に答える 3

4

組み込みsortコマンドを使用できます。

2 番目のタブ区切り列:sort /[^\t]*\t/で並べ替えるには、2 番目の列を並べ替えるために使用できます。3番目の列をソートするには、使用できます:sort /[^\t]*\t\{2}/

通常は、数値を列番号から 1 を引いた値に置き換えます (つまり、最初の列がインデックス 0 のインデックス列)。

于 2013-04-21T23:07:10.140 に答える
0

sortvia と呼ばれる外部:'<,'>!sort -k 2は機能します。-nフラグ (数値ソート用) が指定されているが、使用する列が非数値である場合にのみ、結果は期待どおりになりません。したがって、 external を使用するには、例sortをドロップするだけです。-n

備考:私にも:'<,'>sort /.*\%2v/効果があります。

于 2013-04-22T01:11:48.183 に答える
0

悲しいことに、同じファイル内のビジュアル ブロックを使用したり、1 つのコマンドを使用したりすることはでき:exないようCtrl-vです。selection:'<,'>sort

少しハックな「解決策」は、視覚的なブロックで並べ替えたいものを選択し、別のウィンドウで並べ替えて、変更を元のファイルに適用することです。このようなもの:

Ctrl-v+ selection+ x+ :tabnew+ p+ :sort+ Ctrl-vG$x+ :q+ `[P(整列ペースト)

出典: Barry Arthur - Sort Me A Column (bairui from #vim@freenode)。

于 2013-04-21T22:31:08.667 に答える