
Soy nuevo en UNIX. Por favor explique sort
el comando. Tengo dudas relacionadas con el separador de campos de clasificación. Por ejemplo: sort -k2, 2 filename
Por favor aclare. Por favor proporcione un pequeño ejemplo.
Respuesta1
Hay un error de sintaxis en sort -k2, 2 filename
No debería haber un delimitador de espacio en la -k2,2
opción. Además, eliminaría una posible fuente de confusión y/o error (dependiendo del contenido del archivo que se está ordenando) al agregar un orden de diccionario o una opción de ordenación numérica al comando para dejar explícito cómo deben ser las cosas. ser ordenado.
Ejemplos
cat unsorted-file.txt # original unsorted file
9 8 7
6 55 44
3 2 1
sort -k1 -n unsorted-file.txt # example 1
3 2 1
6 55 44
9 8 7
sort -k3 -n unsorted-file.txt # example 2
3 2 1
9 8 7
6 55 44
sort -k1,3 -n unsorted-file.txt # example 3
3 2 1
6 55 44
9 8 7
sort -k2,3 -n unsorted-file.txt # example 4
3 2 1
9 8 7
6 55 44
Explicación
De forma predeterminada, el delimitador de campo no es una transición en blanco a blanco.
KEYDEF -k
es F[.C][OPTS][,F[.C][OPTS]] para la posición inicial y final, donde F es un número de campo y C una posición de carácter en el campo. Ambos son origen 1 y la posición de parada por defecto es el final de la línea.
-k1
- primer campo
-k3
- tercer campo
-k1,3
- iniciar el primer campo, detener el tercer campo
-k2,3
- iniciar el segundo campo, detener el tercer campo
-n
- comparar según el valor numérico de la cadena