Comando de clasificación de Linux: ¿cómo ordenar un número incrustado en un campo?

Comando de clasificación de Linux: ¿cómo ordenar un número incrustado en un campo?

Estoy en RHEL 6 usando BASH.

Estoy intentando ordenar algunas líneas en un archivo por un número incrustado en un campo. El nombre del archivo es word.txt.

Este es el comando que estoy usando:

sort -n -k4 word.txt

Este es el resultado que obtengo, no en orden numérico:

INSERT INTO area_names VALUES(124,'NewYork');
INSERT INTO area_names VALUES(125,'NewYork');
INSERT INTO area_names VALUES(12,'NewYork');

Obviamente, la línea con sólo "12" debería ser la primera.

El número después de "VALUES(" puede tener cualquier longitud

¿Cómo puedo indicarle a sort que ordene el número entre "VALUES(" y ","?

Puedo recurrir a una solución alternativa que consiste en poner un espacio en blanco después de "VALUES(" en los datos, pero preferiría no hacerlo a menos que sea la mejor opción.

Respuesta1

Prueba esto:

 sort -t "(" -k2,2 -n word.txt

Producción

INSERTAR EN nombres_área VALUES(12,'NuevaYork');
INSERTAR EN nombres_área VALUES(124,'NuevaYork');
INSERTAR EN nombres_área VALUES(125,'NuevaYork');

-k POS1[,POS2]

     Especifique un campo de clasificación que consta de la parte de la línea entre
     POS1 y POS2 (o el final de la línea, si se omite POS2),
     _inclusivo_.

     Cada POS tiene la forma `F[.C][OPTS]', donde F es el número del
     campo a utilizar, y C es el número del primer carácter del
     comienzo del campo. Los campos y las posiciones de los caracteres son
     numerado comenzando con 1; una posición de carácter de cero en POS2
     indica el último carácter del campo. Si se omite '.C'
     POS1, por defecto es 1 (el comienzo del campo); si se omite
     desde POS2, el valor predeterminado es 0 (el final del campo). OPTS son
     Opciones de pedido, lo que permite ordenar las claves individuales según
     a reglas diferentes; consulte a continuación para obtener más detalles. Las claves pueden abarcar múltiples
     campos.

     Ejemplo: Para ordenar en el segundo campo, use `--key=2,2' (`-k 2,2').

información relacionada