regular-expression – Ordenar según palabras separadas por comas

Pregunta:

Comando normal: sort puede ordenar las líneas según la columna o la columna virtual ( \%c o \%v ), ¿podría usarse la columna lógica de nivel superior como clave de clasificación? El uso de expresiones regulares parece un poco complejo para este escenario (¿la columna está al final de la línea?) Y se parece a lo que hace la utilidad de ordenación ( sork -k ), pero ordenar con esta funcionalidad no está disponible en Windows. El complemento Vim también ayudará.

Por ejemplo, me gustaría ordenar las 2 líneas siguientes de acuerdo con la última columna separada por comas. Mi escenario real tiene muchas más columnas y patrones de cadena. Especificar el delimitador de columna lo simplificará mucho.

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

Respuesta:

La ordenación de Vim le permite omitir {pattern} o solo considerarlo (con la r ). Una expresión regular para la última columna delimitada por comas es fácil de formular: omita todo hasta la última coma de una línea incluida, incluida:

:sort/.*,/

Para cualquier otra columna, usaría la bandera r y omitiría N (aquí: 2 ) columnas anteriores a través de \zs :

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

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım