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.