Ordinamento basato su parole separate da virgola


11

Comando normale: l'ordinamento può ordinare le righe in base alla colonna o alla colonna virtuale ( \%co \%v), è possibile utilizzare la colonna logica di livello superiore come chiave di ordinamento? L'uso dell'espressione regolare sembra un po 'complesso per questo scenario (la colonna si trova alla fine della riga?) E sembra simile a ciò che fa l'utilità di ordinamento ( sork -k), ma l'ordinamento con questa funzionalità non è disponibile su Windows. Anche il plug-in Vim sarà di aiuto.

Ad esempio, vorrei ordinare le 2 righe sottostanti in base all'ultima colonna separata da virgola. Il mio scenario reale ha molte più colonne e uno schema di stringhe. Specificare il delimitatore di colonna lo semplificherà molto.

xxx,yyy,zzz,0x123
zzxz,xxxx,yyyy,0x121

Risposte:


11

L'ordinamento di Vim ti consente di saltare {pattern}o solo di considerarlo (con la rbandiera). Un'espressione regolare per l'ultima colonna delimitata da virgole è facile da formulare: salta tutto fino a e includendo l'ultima virgola in una riga:

:sort/.*,/

Per qualsiasi altra colonna, vorrei usare la rbandiera e saltare N (qui 2:) colonne precedenti tramite \zs:

:sort/\([^,]*,\)\{2}\zs[^,]*/

1
Poiché l'ultima colonna sembra essere un numero esadecimale che utilizza la xbandiera potrebbe anche essere utile.
jecxjo,

Questo sembra fantastico. L'ultima colonna può essere un caso speciale. Qualche semplice rappresentazione per le colonne centrali?
Thomson,

Pensavo fossi riuscito a trovare qualcosa per quello, ma eccoti qui. Accetta la mia risposta (modificata) facendo clic sul segno di spunta delineato accanto ad essa. Grazie!
Ingo Karkat,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.