Tri basé sur des mots séparés par des virgules


11

Commande normale: le tri peut trier les lignes en fonction de la colonne ou de la colonne virtuelle ( \%cou \%v), la colonne logique de niveau supérieur pourrait-elle être utilisée comme clé de tri? L'utilisation d'une expression régulière semble un peu complexe pour ce scénario (la colonne se trouve à la fin de la ligne?) Et elle ressemble à ce que fait l'utilitaire de tri ( sork -k), mais le tri avec cette fonctionnalité n'est pas disponible sous Windows. Le plug-in Vim vous aidera également.

Par exemple, je voudrais trier les 2 lignes ci-dessous selon la dernière colonne séparée par une virgule. Mon scénario réel a beaucoup plus de colonnes et de modèles de chaînes. Spécifier le délimiteur de colonne le simplifiera beaucoup.

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

Réponses:


11

Le tri de Vim vous permet soit de sauter {pattern}, soit de le considérer uniquement (avec le rdrapeau). Une expression régulière pour la dernière colonne délimitée par des virgules est facile à formuler: sautez tout jusqu'à et y compris la dernière virgule dans une ligne:

:sort/.*,/

Pour toute autre colonne, j'utiliserais le rdrapeau et sauterais N (ici 2:) colonnes précédentes via \zs:

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

1
Étant donné que la dernière colonne est un nombre hexadécimal, l'utilisation du xdrapeau peut également être utile.
— jecxjo

Ça a l'air génial. La dernière colonne peut être un cas particulier. Une représentation simple pour les colonnes du milieu?
— Thomson

Je pensais que vous pouviez trouver quelque chose pour cela, mais vous y êtes. Veuillez accepter ma réponse (modifiée) en cliquant sur la coche indiquée à côté. Merci!
— Ingo Karkat
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.