Este es un ejemplo del archivo de texto:
195.92.211.47:21029:400
195.92.211.48:21023:400
¿Cómo puedo ordenar las líneas del archivo por los últimos 2 dígitos de la segunda columna? La segunda columna siempre tiene cinco dígitos.
Respuesta1
Suponiendo que el segundo :
campo delimitado siempre contiene cinco dígitos:
$ sort -t ':' -k2.4,2n file
195.92.211.48:21023:400
195.92.211.47:21029:400
Indica usar el segundo campo, desde el carácter 4 en adelante (eso es lo que hace -k2.4,2n
) hasta el final del campo como clave de clasificación, y ordenar la entrada numéricamente en esa clave (la del final). Para ordenar numéricamente porsort
.4
n
enterosegundo campo, habrías usado -k2,2n
. Solemos -t ':'
decir que los campos están delimitados por dos puntos.
Puedes ver que está usando los números correctos para ordenar si ejecutas el comando con --debug
(aquí se muestra tanto GNU sort
como sort
en OpenBSD):
$ gsort --debug -t ':' -k2.4,2n file
gsort: text ordering performed using simple byte comparison
195.92.211.48:21023:400
__
_______________________
195.92.211.47:21029:400
__
_______________________
$ sort --debug -t ':' -k2.4,2n file
Memory to be used for sorting: 2139060224
sort_method=heapsort
; k1=<23>, k2=<29>; s1=<195.92.211.48:21023:400>, s2=<195.92.211.47:21029:400>; cmp1=-1
195.92.211.48:21023:400
195.92.211.47:21029:400
Respuesta2
Usarsort -t: -nk2.4
-t uses the delimiter :
-n for numerical sort
-k your key is the second column
Las definiciones clave están muy bien explicadas en info sort
.
'-k POS1[,POS2]'
'--clave=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 el formato 'F[.C][OPTS]', donde F es el número del campo a utilizar y C es el número del primer carácter desde el inicio del campo. Los campos y las posiciones de los caracteres están numerados comenzando con 1; una posición de carácter cero en POS2 indica el último carácter del campo. Si se omite '.C' en POS1, el valor predeterminado es 1 (el comienzo del campo); si se omite en POS2, el valor predeterminado es 0 (el final del campo). OPTS son opciones de ordenación que permiten ordenar claves individuales según diferentes reglas; consulte a continuación para obtener más detalles. Las claves pueden abarcar varios campos.
Ejemplo: para ordenar en el segundo campo, use '--key=2,2' ('-k 2,2'). Consulte a continuación para obtener más notas sobre claves y más ejemplos. Consulte también la opción '--debug' para ayudar a determinar la parte de la línea que se utiliza en la clasificación.